6 Stimmen

Warum ignoriert .load() von Jquery das <script>?

Ich habe eine alltägliche Seite a.html, die wie folgt aussieht:

<html>
  <head>
    <script type="text/javascript" src="xyz.js" > </script>
  </head>
  <body>
    <div> ... </div>
  </body>
</html>

In b.html verwende ich jquery's .load() Funktion zu einer div .

$("#myDiv").load("a.html")  

Es funktioniert. Der Inhalt von xyz.js wird zusammen mit a.html geladen. Aber warum gibt es nicht eine <script> Tag? Ich öffne Firebug, um die Quelle zu sehen. Es gibt a's aber keine a's <script> .

Ich möchte die <script> weil ich den relativen Pfad finden muss. ( diese Frage )

Bearbeiten: Ich habe versucht, die .get() y .html() . Das hat nicht geholfen.

Edit2: Der Titel ist nicht sehr passend. Die xyz.js läuft. Aber keine <script> .

6voto

Pointy Punkte 387467

Le site .load() Funktion entfernt absichtlich die <script> Tags aus dem geladenen Inhalt. Wenn Sie ihm eine einfache URL zum Laden geben, führt es die Skripte aus, nachdem es den Inhalt geladen und dem DOM hinzugefügt hat. Wenn Sie jedoch den Trick anwenden, einen Selektor hinzuzufügen nach die URL im ersten Argument:

$('#foo').load("http://some.domain.com/blah #special-div");

dann wird die <script> Tags, aber es tut pas sie ausführen.

Und warum? Ich weiß es nicht.

Bitte beachten Sie, dass das Laden einer ganzen Seite aus dem <html> Tag auf ein Element einer anderen Seite zu übertragen, wird zu einer Art Frankenstein-Monster eines DOMs führen, wenn ein Browser dies überhaupt tut. Wenn Sie ".load()" verwenden, um Fragmente von Inhalten zur Aktualisierung einer Seite abzurufen, sollte Ihr Server im Allgemeinen mit einem Teil der Seite antworten, nicht mit der gesamten Seite. Die jQuery-Methode, einen Selektor nach der eigentlichen URL zuzulassen, soll es Ihnen ermöglichen, einen Teil einer Seite herauszunehmen, was wirklich cool ist, aber es hat den Nachteil, dass die Skripte in diesem Fall nicht ausgeführt werden.

0voto

Starx Punkte 74690

Denn es kann das Skript nicht innerhalb der <SCRIPT> Tag. jQuery hat .getScript() nur für Skripte aufrufen. Hier prüfen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X