我正在开发一个chrome扩展程序,它从页面读取html注释并在动作弹出窗口中呈现它们。
但是,我不知道如何(以及是否可能)获取<html>
标记之前和之后的一些注释。例如:
<!-- test test test -->
<DOCTYPE html>
<html>
...
</html>
在jQuery中,$("html").before()
和$("html").after()
都返回与$("html")
相同的内容。
是否可以使用jQuery或纯Javascript获取这些类型的注释?
编辑:包含评论的页面如下所示:
<!-- Comment I'd like to fetch -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us" lang="en-us" >
<head>
<title>Featured Designers for WOMEN</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
答案 0 :(得分:4)
有了这份文件:
<!-- comment 1 -->
<!DOCTYPE html>
<!-- comment 2 -->
<html>
<body>
hello world
</body>
</html>
你得到第一个这样的评论:
document.firstChild.nodeValue
第二条评论是这样的:
document.childNodes[2].nodeValue
获取document
下的所有评论:
var nodes = document.childNodes;
for (var i = 0, len = nodes.length; i !== len; ++i) {
if (nodes[i].nodeType === 8) {
console.log('Found comment' + nodes[i].nodeValue);
}
}
答案 1 :(得分:0)
document.firstChild
应该这样做。
答案 2 :(得分:0)
$("html").siblings();
这将返回与我认为的html标签处于同一级别的所有dom对象元素。我想通过使用JSfiddle确认,但我现在正在使用IE8在他们的网站上收到Javascript错误。如果在你的测试中它不适合你,我可以在以后确认。