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

Ale*_*lex 10 javascript string jquery

或任何其他标签:)

例如.

  <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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

我怎样才能做到这一点?

Str*_*lok 7

定义:outerHTML函数(取自此处)

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

然后假设您的响应存储在data您可以执行的操作中:

$(data).filter("script").each( function(e) { 
    // do something with $(e).outerHTML()
} );
Run Code Online (Sandbox Code Playgroud)

  • 在像OPs响应那样的扁平字符串中,`.find()`将不匹配任何东西.使用`.filter()`代替. (2认同)