【问题标题】:Javascript Return HTML and css content as a string but not the javascriptJavascript 以字符串形式返回 HTML 和 css 内容,但不返回 javascript
【发布时间】:2017-02-16 18:34:28
【问题描述】:

有没有办法获取页面HTML、CSS的所有内容,但排除所有java脚本函数和脚本src?

        var htmlPage = $("html").html();
    console.log(htmlPage);

我知道这会给我一切。但我需要从结果中排除 JS

【问题讨论】:

标签: javascript jquery innerhtml


【解决方案1】:

编辑:修复了正则表达式(非贪婪版本)

你可以试试这个:

var htmlPage = $("html").html().replace(/<script[\s\S]*?<\/script>/mig, "");

正则表达式应该匹配所有&lt;script&gt; ... &lt;/script&gt;标签,并用空替换它们。


顺便说一句,这是一个幸运的机会,因为正则表达式本身要求结尾 &lt;/script&gt;\ 反斜杠转义,如下所示:&lt;\/script&gt;

这个转义字符是正则表达式不匹配自身的原因,这会导致它失败。因此,它之所以有效,是因为通过正确转义它不再是自相似的。

【讨论】:

  • 完美,我也在玩它,我得到了这个 var htmlPage = $("html").html().replace(/
  • 非常感谢您的帮助:)
  • 我很高兴,这也很有趣:)
【解决方案2】:

另一种选择是使用Element.innerHTML 并包含您想要获取的内容。例如:

<!doctype html>
<html>
  <head>
   <!--Css links goes here--> 
  </head>
  <body>
   <!--Your content-->
    <p>Hello World</p> 
  </body>
 <script>
 //Js
 </script>
<html>
var body = document.body.innerHTML;
var head = document.head.innerHTML;

然后你可以连接或任何你想要的。

【讨论】:

  • 我不建议在&lt;head&gt;&lt;body&gt; 标签之外放置任何东西。 HTML5 标准不允许这样做,它会破坏某些浏览器上的页面。在 2017 年编写非验证 HTML 也是一种不好的做法。更多信息请看这里:stackoverflow.com/questions/3037725/…。我不会投反对票,因为这条评论足以纠正。祝你有美好的一天,先生。
  • 你完全正确。谢谢你的信息。
猜你喜欢
  • 2014-04-26
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 2012-05-25
  • 2014-09-25
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多