簡體   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