Javascript来抓取Javascript评论

时间:2011-11-29 04:06:05

标签: javascript

我的网页开头如下:

<html>
        <head>
        <!-- 12036,2011-11-29/11:02 -->
        <title>Products & Services</title>

我想在这里抓取12036号码并将其显示在屏幕右下方绝对定位的DIV中。我的目的是要么将它用作书签或Greasemonkey脚本。

这样做的目的是数字代表我们在内部使用引用的PAGE ID。

我开始使用:

var x = document.getElementsByTagName('head').innerHTML;

但我无法继续前进。

有人可以在这里提供帮助吗?

3 个答案:

答案 0 :(得分:6)

这适用于最新的浏览器,但您需要修改它以适应旧浏览器......

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);

......还有一点CSS ......

#id-display {
    position: fixed;
    bottom: 0;
    right: 0;
    background: #333;
    color: #fff;
    padding: 6px;
}

JSBin

答案 1 :(得分:2)

您想要选择您正在使用的任何元素,我们称之为var ele;

var div = document.getElementsByTagName('div')[0];

然后你想要获取ele中所有子节点的数组,所以var nodes = div.childNodes;

然后循环遍历它们的节点类型,注释为“8”as per the spec.

for (var i=0; i<nodes.length; i++){
    if (nodes[i].nodeType === 8) {
        //Only comments go out to console.
        console.log(nodes[i]);
    }1
}

Here's a demo for you.

请注意,您是NEVER TO EVER PARSE HTML WITH A REGULAR EXPRESSION

答案 2 :(得分:1)

getElementsByTagName返回一个元素数组。在获得innerHTML或其他任何内容之前,您需要获取该数组中的第一个元素。

document.getElementsByTagName('head')[0].innerHTML

您可能需要考虑使用innerHTML和循环来查找注释节点,而不是使用.childNodes