Javascript jQuery:在不执行脚本的情况下解析/操作HTML

Javascript jQuery:在不执行脚本的情况下解析/操作HTML,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我正在通过Ajax以以下格式加载一些HTML: <div id="div1"> ... some content ... </div> <div id="div2"> ...some content... </div> ... etc. ... 一些内容。。。 …一些内容。。。 ... 等 我需要迭代响应中的每个div并分别处理它。为映射到id的每个div的HTML内容提供一个单独的字符串可以满足我的要求。但是,div可能包含脚本标记

我正在通过Ajax以以下格式加载一些HTML:

<div id="div1">
  ... some content ...
</div>
<div id="div2">
  ...some content...
</div>
... etc.

... 一些内容。。。
…一些内容。。。
... 等
我需要迭代响应中的每个div并分别处理它。为映射到id的每个div的HTML内容提供一个单独的字符串可以满足我的要求。但是,div可能包含脚本标记,我需要保留这些标记,但不需要执行它们(稍后当我将HTML粘贴到文档中时,它们将执行,因此在解析过程中执行这些标记是不好的)。我的第一个想法是这样做:

// data being the result from $.get
var clean = data.replace(/<script.*?</script>/,function() {
    // insert some unique token, save the tag, put it back while I'm processing
}); 

$('<div/>').html(clean).children().each( /* ... process here ... */);
//数据是$.get的结果

var clean=data.replace(/FYI,在任何JavaScript脚本中使用unescaped都会导致浏览器出现此问题。开发人员无论如何都必须逃避它,因此没有借口。因此,您可以“信任”它,这在任何情况下都会破坏

<body>
 <div>
   <script>
     alert('<script> tags </script> are not '+
         'valid in regular old HTML without being escaped.');
   </script>
</body>

警报('tags not'+
“在常规的旧HTML中有效,但不转义。”);


要看到它断开。:

在某些情况下,删除脚本标记会导致无效的html:

 <html>
    <head>
    </head>
    <body>
        <p>This should be
        <script type="text/javascript">
            document.writeln("<b");
        </script>>bolded</b>.
    </body>
 </html>

这应该是

writeln(“我想这意味着我的第一个解决方案是安全的。我不喜欢它,但它是有效的。
<body>
 <div>
   <script>
     alert('<script> tags </script> are not '+
         'valid in regular old HTML without being escaped.');
   </script>
</body>
 <html>
    <head>
    </head>
    <body>
        <p>This should be
        <script type="text/javascript">
            document.writeln("<b");
        </script>>bolded</b>.
    </body>
 </html>