Dies scheint ein Problem zu sein, das nur mit Safari zusammenhängt. Ich habe 4 unter Mac und 3 unter Windows ausprobiert und habe immer noch kein Glück.
Ich versuche, eine externe HTML-Datei zu laden und das eingebettete JavaScript ausführen zu lassen.
Der Code, den ich verwenden möchte, lautet wie folgt:
$("#myBtn").click(function() {
$("#myDiv").load("trackingCode.html");
});
trackingCode.html
sieht so aus (jetzt einfach, wird aber einmal erweitert / wenn ich das zum Laufen bringe):
<html>
<head>
<title>Tracking HTML File</title>
<script language="javascript" type="text/javascript">
alert("outside the jQuery ready");
$(function() {
alert("inside the jQuery ready");
});
</script>
</head>
<body>
</body>
</html>
Ich sehe beide Warnmeldungen in IE (6 & 7) und Firefox (2 & 3). Ich kann die Nachrichten in Safari jedoch nicht sehen (der letzte Browser, mit dem ich mich befassen muss - Projektanforderungen - bitte keine Flammenkriege).
Irgendwelche Gedanken darüber, warum Safari das JavaScript in der trackingCode.html
Datei ignoriert ?
Schließlich möchte ich in der Lage sein, JavaScript-Objekte an diese trackingCode.html
Datei zu übergeben, um sie im jQuery-fähigen Aufruf zu verwenden, aber ich möchte sicherstellen, dass dies in allen Browsern möglich ist, bevor ich diesen Weg gehe.
quelle
Eine andere Version von John Picks Lösung kurz zuvor, das funktioniert gut für mich:
quelle
Mir ist klar, dass dies ein älterer Beitrag ist, aber für jeden, der auf diese Seite kommt und nach einer ähnlichen Lösung sucht ...
http://api.jquery.com/jQuery.getScript/
quelle
Dies scheint nicht zu funktionieren, wenn Sie das HTML-Feld in ein dynamisch erstelltes Element laden.
Ich schaue auf Firebug DOM und es gibt überhaupt keinen Skriptknoten, nur den HTML- und meinen CSS-Knoten.
Ist jemand darauf gestoßen?
quelle
Du hast es fast geschafft. Sagen Sie jquery, dass Sie nur das Skript laden möchten:
quelle
Ich habe das folgende jquery Plugin für die HTML-Ladefunktion geschrieben: http://webtech-training.blogspot.in/2010/10/dyamic-html-loader.html
quelle
Testen Sie dies in trackingCode.html:
quelle
Ich bin darauf gestoßen, wo die Skripte einmal geladen wurden, aber wiederholte Aufrufe das Skript nicht ausführen würden.
Es stellte sich heraus, dass es ein Problem war, mit .html () eine Warteanzeige anzuzeigen und danach .load () zu verketten.
Wenn ich sie separat anrief, wurden meine Inline-Skripte jedes Mal wie erwartet geladen.
Beachten Sie für weitere Untersuchungen, dass es zwei Versionen von .load () gibt.
Ein einfacher .load () -Aufruf (ohne Selektor nach der URL) ist einfach eine Abkürzung für den Aufruf von $ .ajax () mit dem Datentyp: "html" und das Aufnehmen des zurückgegebenen Inhalts und das Aufrufen von .html (), um diesen Inhalt in das DOM einzufügen . In der Dokumentation zu dataType: "html" heißt es eindeutig: "Eingeschlossene Skript-Tags werden beim Einfügen in das DOM ausgewertet." http://api.jquery.com/jquery.ajax/ Also .load () führt offiziell Inline-Skripte aus.
Ein komplexer .load () -Aufruf verfügt über einen Selektor wie load ("page.html #content"). Auf diese Weise filtert jQuery Skript-Tags gezielt heraus, wie in Artikeln wie diesem beschrieben: https://forum.jquery.com/topic/the-load-function-and-script-blocks#14737000000752785 In diesem Fall werden die Skripte niemals ausgeführt laufen, nicht einmal.
quelle
Nun, ich hatte das gleiche Problem, das nur bei Firefox auftrat, und ich konnte außer .load () keinen anderen JQuery-Befehl verwenden, da ich das Front-End für vorhandene PHP-Dateien geändert habe ...
Nachdem ich den Befehl .load () verwendet hatte, bettete ich mein JQuery-Skript in den externen HTML-Code ein, der geladen wurde, und es schien zu funktionieren. Ich verstehe nicht, warum das JS, das ich oben im Hauptdokument geladen habe, für den neuen Inhalt nicht funktioniert hat ...
quelle
Ich konnte dieses Problem beheben, indem ich
$(document).ready()
zu wechseltewindow.onLoad()
.quelle
@Efreed Antwort anheften ...
Ich habe benutzt
.load('mypage.html #theSelectorIwanted')
, um Inhalte von einer Seite per Selektor aufzurufen, aber das bedeutet, dass die darin enthaltenen Inline-Skripte nicht ausgeführt werden.Stattdessen konnte ich mein Markup so ändern, dass
'#theSelectorIwanted'
es zu einer eigenen Datei wurde, die ich verwendet habeund es lief die Inline-Skripte ganz gut.
Nicht jeder hat diese Option, aber dies war eine schnelle Lösung, um dahin zu gelangen, wo ich wollte!
quelle