2016-11-12 1 views
3

Ich möchte <script> ...... </script> als Text (oder nicht ausführbaren Code), der von einer anderen Seite mit Ajax zurückgegeben wird.Wie zu entfernen/stoppen Skript von der Ausführung in 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"); 
     } 
    }); 

mein Problem ist, dass der obige Code des Skripts im Innern der response ausführt, wenn Fehler meine furthur Seite ausführen wird nicht auftreten und das Programm wird beendet. also wollte ich script not executable machen. wie kann ich es tun?

oder wie kann ich machen jede code inside script blank

mein Skript annehmen, wie diese

<script type="text/javascript"> 
    // some erroneous code or some resource load which failed verification 
    console.log('i want to remove every code'); 
</script> 
+0

Ihre Frage ist nicht klar. Können Sie es bitte reframe es – brk

+0

ich möchte nur entfernen oder ersetzen von Skript, das von Ajax Antwort zurückgegeben wird – EaB

Antwort

0

ist, ich glaube, Sie 3 zu tun haben, die Schritte

  1. Umwandlung erhalten htmlstring in DOM Element wie

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

oder verwenden

var doc = document.createElement('div'); 
doc.innerHTML = response; 
  1. Dann finden alle Script-Tags init

    allScriptTags = doc.find("script")

  2. Nach dieser Laufschleife auf allScriptTags und entfernen Sie alle Script-Tags

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

Ich hoffe, es hilft.

Wenn es nicht funktioniert, versuchen Sie, String-Manipulation zu verwenden, um Tags aus remove htmlstring zu entfernen.

Plunker: http://plnkr.co/edit/OUi8U945MIMFZoWQpBGy?p=preview

+0

ok @hemaKumar, was ist var = neue DOMParser() ist es api oder in Built in jquery? – EaB

+0

Folgen Sie diesem Link https://developer.mozilla.org/en-US/docs/Web/API/DOMParser – Hemakumar

+0

Sie können verwenden var doc = document.createElement ('div'); doc.innerHTML = Antwort; ohne Parser-Erweiterung. – Hemakumar

0

Use "<pre>" oder (html5 Unterstützung) Tags, den Code zu zeigen, wie es ist.

Verwandte Themen