我想将<script> ...... </script>
作为使用ajax从其他页面返回的文本(或非可执行代码)。
<div id="page"></div>
$.ajax({
url: "http://example.com",
type: "GET",
crossDomain: true,
dataType: "text/html",
success: function(response) {
console.log(response);
$('#page').append(response);
},
error: function(xhr, status) {
alert("error");
}
});
我的问题是上面的代码执行response
内部的脚本,如果发生错误,我的页面将不会执行,程序将停止。所以我想制作script not executable
。 我该怎么做?
或如何制作任何code inside script blank
假设我的脚本是这样的
<script type="text/javascript">
// some erroneous code or some resource load which failed verification
console.log('i want to remove every code');
</script>
答案 0 :(得分:0)
我认为你必须做3个步骤
将收到的htmlstring转换为DOM元素,如
parser = new DOMParser()
doc = parser.parseFromString(response, "text/xml");
或使用
var doc = document.createElement('div');
doc.innerHTML = response;
然后找到所有脚本标签init
allScriptTags = doc.find( "script" )
在allScriptTags上运行循环并删除所有脚本标记
allScriptTags.forEach( function(item) { item.remove(); // or item.parentNode.removeChild(item); for older browsers (Edge-) });
最后,
$.ajax({
url: "http://example.com",
type: "GET",
crossDomain: true,
dataType: "text/html",
success: function(response) {
console.log(response);
parser = new DOMParser()
doc = parser.parseFromString(response, "text/xml");
allScriptTags = doc.find( "script" )
allScriptTags.forEach(
function(item) {
item.remove();
// or item.parentNode.removeChild(item); for older browsers (Edge-)
});
$('#page').append(doc);
},
error: function(xhr, status) {
alert("error");
}
});
我希望它会有所帮助。
如果它不起作用,请尝试使用字符串操作从删除htmlstring中删除标记。
Plunker :http://plnkr.co/edit/OUi8U945MIMFZoWQpBGy?p=preview
答案 1 :(得分:0)
使用&#34;&lt; pre&gt;&#34;或(html5支持)标记以按原样显示代码。