作为 JS 新手,我有一个跟踪脚本,它读取页面的元数据并使用以下命令将正确的脚本放置在该页面上:
var element = document.querySelector('meta[name="tracking-title"]');
var content = element && element.getAttribute("content");
console.log(content)
这显然将正确的标签发布到控制台,因此我可以确保它正常工作......并且在测试情况下确实如此。但是,在实际网站上,我所针对的元数据是由 Java 应用程序在页面上生成的,超出了我的控制范围,问题是它位于注释掉的区域中。此脚本无法在注释掉的区域内读取。 IE
<!-- your tracking meta is here
<meta name="tracking-title" content="this-is-the-first-page">
Tracking finished -->
任何想法表示赞赏。
最佳答案
您可以使用此代码:
var html = document.querySelector('html');
var content;
function traverse(node) {
if (node.nodeType == 8) { // comment
var text = node.textContent.replace(/<!--|-->/g, '');
var frag = document.createDocumentFragment();
var div = document.createElement('div');
frag.appendChild(div);
div.innerHTML = text;
var element = div.querySelector('meta[name="tracking-title"]');
if (element) {
content = element.getAttribute("content");
}
}
var children = node.childNodes;
if (children.length) {
for (var i = 0; i < children.length; i++) {
traverse(children[i]);
}
}
}
traverse(html);
关于Javascript从评论的html中提取内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34002876/