2016-11-12 16 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的支持)標籤來顯示代碼的。