2016-11-12 30 views
3

执行删除/停止脚本想让<script> ...... </script>文本(或不可执行代码),这是从另一个页面用ajax返回。我如何从jQuery中

<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"); 
     } 
    }); 

我的问题是,如果出现错误我furthur页面将不执行,程序将停止上面的代码执行目前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

你的问题不清楚。你可以请重构它 – brk

+0

我只是想删除或替换从脚本这是返回从ajax响应 – EaB

回答

0

我认为你需要做的3个步骤

  1. 将接收到的htmlstring到DOM元素像

    parser = new DOMParser() 
          doc = parser.parseFromString(response, "text/xml"); 
    

,或者使用

var doc = document.createElement('div'); 
doc.innerHTML = response; 
  • 然后找出所有脚本标记初始化

    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删除标签。

    Plunkerhttp://plnkr.co/edit/OUi8U945MIMFZoWQpBGy?p=preview

    +0

    ok @hemaKumar,什么是VAR =新的DOMParser()是它的API或内置jQuery的? – EaB

    +0

    关注此链接https://developer.mozilla.org/zh-CN/docs/Web/API/DOMParser – Hemakumar

    +0

    您可以使用 var doc = document.createElement('div'); doc.innerHTML =响应; 没有解析器扩展。 – Hemakumar

    0

    使用 “<预>” 或(HTML5的支持)标签来显示代码的。