繁体   English   中英

从HTML字符串中提取脚本标签

[英]Extract script tags from a HTML string

或任何其他标签:)

例如

  <head>
    <title>page...</title>
    <script> var a = 'abc'; </script>
    <script src="foo.js" type="text/javascript"></script>
  </head>
  <body>
    ...
    <script src="foo2.js"></script>
  </body>

(此字符串是来自ajax调用的响应)

我想得到一个包含3个字符串的数组:

  1. <script> var a = 'abc'; </script>
  2. <script src="foo.js" type="text/javascript"></script>
  3. <script src="foo2.js"></script>

我怎样才能做到这一点?

定义:externalHTML函数(从此处获取

jQuery.fn.outerHTML = function(s) {
return (s) ? this.before(s).remove() : jQuery("&lt;p&gt;").append(this.eq(0).clone()).html();
}

然后假定您的响应存储在可以执行的data

$(data).filter("script").each( function(e) { 
    // do something with $(e).outerHTML()
} );

使用带有<script[^<]*</script>模式的正则表达式。

您可以尝试如下操作:

 function getScriptsAsText() {
   var div = document.createElement('div');
   var scripts = [];
   var scriptNodes = document.getElementsByTagName('script');

   for (var i=0, iLen=scriptNodes.length; i<iLen; i++) {
     div.appendChild(scriptNodes[i].cloneNode(true));
     scripts.push(div.innerHTML);
     div.removeChild(div.firstChild);
   }
   return scripts;
 }

它以文本形式返回当前脚本元素的数组,包括它们的开始和结束标签。

您也可以尝试externalHTML,但是并没有得到广泛的支持。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM