-1

我有一个 Greasemonkey 脚本(这里的原始线程:Javascript to grab Javascript comments within <head>)从网页中抓取一个字符串——我们的 CMS 在页面上标记的 PageID——然后这个字符串使用 Greasemonkey 显示在我的浏览器中。这样做的目的是为了网站维护,这样我就可以浏览我们的网站并快速查看特定页面的 PageID 是什么。用于实现此目的的代码是:

var commentNode = [].slice.call(document.head.childNodes).filter(function(node) {
            return node.nodeType == 8;
          })[0],
    id = commentNode.data.match(/^\s*(\d+)/)[1];

var elem = document.createElement('div');
elem.id = 'id-display';
elem.appendChild(document.createTextNode(id));
document.body.appendChild(elem);

GM_addStyle = function(css) {
        var head = document.getElementsByTagName('head')[0], style = document
                .createElement('style');
        if (!head) {
            return
        }
        style.type = 'text/css';
        style.textContent = css;
        head.appendChild(style);
}

这在我的浏览器(Chrome 或 Firefox w/Greasemonkey)中显示为:

Page ID: 0001

我现在有一个单独的 HTML 报告,它以以下格式从我们的 CMS 发布:

<table class="report-table">
 <thead>
    <tr>
      <th scope="col">Page Id</th>
      <th scope="col">Page title</th>
      <th scope="col">Page URL</th>
      <th scope="col">Content Editor</th>
      <th scope="col">Content manager</th>
      <th scope="col">Date updated</th>     
    </tr>
  </thead>
    <tr>
     <td>0001</td>
     <td>Webpage title</td>
     <td><a href="http://www.website.com/page01.htm">www.website.com/page01.htm</a></td>
     <td>Joe Bloggs</td>
     <td>Sussan Smith</td>
     <td>01/11/2012</td>
   </tr>
</table>

此网页报告保存在内部可访问位置\internal-pc\cms-report.html

我现在想做的是让我的 Greasemonkey 仍然获取 PageID 字符串,然后在cms-report.html中的表中查找此 PageID ,然后在 Greasemonkey 覆盖中显示此信息:

Page ID: 0001
Page title: Webpage title
Page URL: www.website.com/page01.htm
Content Editor: Joe Bloggs
Content manager: Sussan Smith
Date Updated: 01/11/2012

谁能带领我走正确的道路?

4

1 回答 1

1

pID使用 jQuery 并假设您在变量和结果 div中有可用的页面 id #result

var pID = '0001';
$(function(){
    $.get('internal-pc/cms-report.html', function(data){
        var table = $(data),
            selectedTD = table.find('td:contains("' + pID + '")'),
            parentTR = selectedTD.parent();
            parentTR.find('td').each(function(i){
                $('#result').append('<p>' + table.find('th:eq(' + i + ')').text() + ': ' + $(this).text() + '</p>');
            });
    });         
});

Note: You will need to modify the $.get URL to point to your cms-report.html文件。

于 2012-11-02T05:38:13.760 回答