【问题标题】:How to check the contents of the head section如何查看head部分的内容
【发布时间】:2011-05-16 01:59:10
【问题描述】:

我编写了一个代理服务器,它在每个页面的 HEAD 部分添加了一个评论标签。 现在我想在 JavaScript 文件中确定注释是否存在。

我该如何做到这一点?

这是一个示例页面:

<html>
  <head><!-- page is proxified -->
    <title>Hello proxified world!</title>
  </head>
  <body>
     <script type="text/javascript">
       // What to do here?
     </script>
  </body>
</html>

【问题讨论】:

    标签: javascript html proxy


    【解决方案1】:
    var comment = '<!-- page is proxified -->',
        commentPresent = document.getElementsByTagName('head')[0].innerHTML.indexOf(comment) !== -1 ? true: false;
    
    if (commentPresent) {
        // code
    }
    

    【讨论】:

      【解决方案2】:

      jquery:

      var headContents = $('head').html();
      

      Javascript:

      var headContents = document.getElementsByTagName('head')[0].innerHTML;
      

      【讨论】:

      • 感谢您的快速答复!
      • document.getElementsByTagName 返回一个 NodeList,它没有 innerHTML 属性。你的意思是document.getElementsByTagName('head')[0].innerHTML
      【解决方案3】:

      使用 Javascript 读取评论节点是可能的,但有点繁琐。您必须找到 head 元素,然后遍历其子节点以找到一个注释(node.nodeType == 8)或正如其他人指出的那样,获取整个 head.innerHTML 并对其进行正则表达式。

      但是,通过添加一些其他元素来实现这一点可能会更容易一些,例如元元素(它也在头部),然后您可以使用 getElementsByTagName() 和/或 jQuery 更轻松地访问它等。

      【讨论】:

        【解决方案4】:

        我不是 100% 确定。但是 cmets 不是写在 DOM 中的。所以应该是不可能通过xpath或者其他的方式来获取的。

        您可以通过

        获取html标签的全部内容
        document.getElementsByTagName('head').innerHTML;
        

        并应用正则表达式。

        另一种可能是添加元标记。这可以用js更容易一点。

        【讨论】:

        • 可能需要 document.getElementsByTagName('head')[0].innerHTML;
        猜你喜欢
        • 2021-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-08
        • 1970-01-01
        • 2011-10-25
        • 2011-01-21
        • 1970-01-01
        相关资源
        最近更新 更多