Javascript从已注释的html中提取内容
作为一个JS新手,我有一个跟踪脚本,可以读取页面的元数据,并使用以下命令将正确的脚本放置在该页面上:Javascript从已注释的html中提取内容,javascript,Javascript,作为一个JS新手,我有一个跟踪脚本,可以读取页面的元数据,并使用以下命令将正确的脚本放置在该页面上: var element = document.querySelector('meta[name="tracking-title"]'); var content = element && element.getAttribute("content"); console.log(content) 这显然会将正确的标记发布到console,这样我就可以确保它正常工作。。在测试环境中
var element = document.querySelector('meta[name="tracking-title"]');
var content = element && element.getAttribute("content");
console.log(content)
这显然会将正确的标记发布到console,这样我就可以确保它正常工作。。在测试环境中也会这样。然而,在实际的网站上,我所瞄准的元数据是由Java应用程序在页面上生成的,超出了我的控制范围,问题是它位于一个被注释掉的区域。此脚本无法在已注释区域内读取。即
<!-- your tracking meta is here
<meta name="tracking-title" content="this-is-the-first-page">
Tracking finished -->
任何想法都值得赞赏。一种方法是使用节点编辑器并获取评论节点。下面是一个简单的例子。您仍然需要解析所需数据的返回值,但我相信您可以在这里扩展它以完成所需的操作 小提琴:
你可以试试这个。但是,这将要求您使用jQuery
$(function() {
$("*").contents().filter(function(){
return this.nodeType == 8;
}).each(function(i, e){
alert(e.nodeValue);
});
});
您可以使用以下代码:
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);
var html=document.querySelector('html');
var含量;
函数遍历(节点){
如果(node.nodeType==8){//comment
var text=node.textContent.replace(//g',);
var frag=document.createDocumentFragment();
var div=document.createElement('div');
儿童福利机构(分部);
div.innerHTML=文本;
var element=div.querySelector('meta[name=“tracking title”]”);
if(元素){
content=element.getAttribute(“内容”);
}
}
var children=node.childNodes;
if(儿童长度){
对于(变量i=0;i
检查此项-此功能非常有效,谢谢jcubic。现在我需要做的就是运行几次IF-ELSE,根据var-content的结果提供不同的结果。
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);