Javascript从已注释的html中提取内容

Javascript从已注释的html中提取内容,javascript,Javascript,作为一个JS新手,我有一个跟踪脚本,可以读取页面的元数据,并使用以下命令将正确的脚本放置在该页面上: var element = document.querySelector('meta[name="tracking-title"]'); var content = element && element.getAttribute("content"); console.log(content) 这显然会将正确的标记发布到console,这样我就可以确保它正常工作。。在测试环境中

作为一个JS新手,我有一个跟踪脚本,可以读取页面的元数据,并使用以下命令将正确的脚本放置在该页面上:

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