jQuery - script-tags in das HTML geparst durch jQuery und nicht ausgeführt
Ich habe eine HTML-Seite wie folgt:
<html>
<body>
<div id='something'>
...
<script>
var x = 'hello world';
</script>
...
</div>
</body>
</html>
Auf einer anderen Seite, ich bin, dies zu tun:
$.ajax({
url: 'example.html',
type: 'GET',
success: function(data) {
$('#mydiv').html($(data).find('#something').html());
alert(x);
}
});
jQuery, jedoch nicht die Ausführung von javascript in die erste Datei, obwohl Sie in der Dokumentation sagt, es tut. Wie kann ich es tun?
EDIT: Leider gibt es in der realen Welt Anwendung, mit der ich arbeite, ich habe keine Kontrolle darüber, was der "enthalten" - Seite hat. Wir sind auf der gleichen domain, aber ich kann nicht den code ändern, dass es die Ausgänge, es ist ein verpacktes Produkt in unserer IT-Abteilung werden wir uns nicht ändern.
InformationsquelleAutor der Frage Jose Jose | 2010-04-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Spitzen wies (entschuldigen Sie das Wortspiel), jQuery verwirrt mit den SCRIPT-tags, wenn Sie übergeben, HTML
$()
. Ist es nicht entfernen Sie Sie, obwohl-es fügt einfach Sie an der DOM-Kollektion hergestellt aus den HTML-Code. Führen Sie die Skripts in etwa so:InformationsquelleAutor der Antwort James
Als alternative zu @James die Antwort, die HTML-string geparst werden können mit
$.parseHTML()
durch Aufmerksamkeit fügen Sie den boolean-flag, enthält die Skripte zutrue
:auf diese Weise eingebetteten Skripts, die in der heruntergeladenen text ausgeführt werden können.
InformationsquelleAutor der Antwort guari
Ich bin mir nicht ganz sicher, aber es ist möglich, dass das, was passiert ist, dass, wenn jQuery baut das fragment aus
$(data)
die script-tags verloren.Wenn Sie arrangieren kann für die enthaltenen Seite, um wirklich nur ein fragment:
ohne anderen umliegenden Sachen, dann ist Ihr Erfolg-callback kann dies tun:
Nun die script-tags wird gemerkt werden durch die jQuery -
html()
- Funktion, die explizit sucht Sie und Streifen Sie aus. Es gilt jedoch festzuhalten, diese Skript blockiert, und es führt Sie nach Abschluss der Aktualisierung der Ziel-Inhalt.InformationsquelleAutor der Antwort Pointy
Lösung 1:die server return genauen Inhalt
Lösung 2:verwenden von innerHTML -
InformationsquelleAutor der Antwort xiaoyifang
Erwarte ich die erste Seite ist die Ausführung des JavaScript, dies ist jedoch nicht zugänglich, von der zweiten Seite, so
alert(x)
wird nicht funktionierenWenn Sie wollen
x
zurückgegeben, Sie müssen ausgegeben werden, um die AJAX-Antwort.InformationsquelleAutor der Antwort James Wiseman