Ich habe ein div-Tag, das über einen Ajax-Aufruf mit Skript gefüllt wird, aber das Skript wird nicht ausgeführt.Skript-Tags über AJAX laden
Gibt es eine Möglichkeit, das Skript auszuführen?
Ich habe ein div-Tag, das über einen Ajax-Aufruf mit Skript gefüllt wird, aber das Skript wird nicht ausgeführt.Skript-Tags über AJAX laden
Gibt es eine Möglichkeit, das Skript auszuführen?
Wenn Sie jQuery .html
Methode den Script-Tag analysiert und evals es:
$("div").html('<script type="text/javascript">alert("This should work")</script>');
Wenn jQuery keine Option ist, dass Sie diese Texte selbst entweder mit schreiben konnte (1) einen regulären Ausdruck oder (2) analysiere den DOM-Baum und finde Skript-Tags. (# 2 ist, wie jQuery es tut)
jQuery muss jedoch ausgelöst werden, und wenn ich dies in die Payload aufgenommen habe, die zurück an den Client gesendet wird, wird es nicht ausgeführt, da das heruntergeladene ajax-Skript nicht gestartet wird. Ausnahme: Ich kann das Defer-Tag im Skript-Markup setzen und IE wird es ausführen, aber das sind nur x% der Benutzer. –
@Caleb: Was macht der Code in Ihrer Antwort? – Ashwin
Dies ist auch der Grund, warum Skript-Tags in AJAX-Anfragen nicht an der Stelle landen, an der sie sich in der Antwort befinden. – Ikke
Wenn Sie innerHtml von div festlegen, sollten die Skript-Tags ausgeführt werden. Ich benutze $ ("# divid"). Load() um dynamische Inhalte zu laden und Script-Tags auszuführen.
Versuchen Sie, JQuery zu verwenden, wenn es nicht mit plain javascript funktioniert.
Leider ist das nicht der Fall. Ein Skript in der HTML-Nutzlast einer von Ajax gelieferten Nutzlast an den Client wird nicht ausgeführt. –
Es ist immer eine gute Idee, Inhalt vom Code zu trennen. Laden Sie Inhalte über AJAX und Code, indem Sie <script>
Tags einfügen. Wenn Sie jQuery verwenden, verwenden Sie $.getScript()
, um Skripts dynamisch zu laden.
Ich denke, Sie schreiben Script-Tag in innerHTML- direkt
Das wird nicht funktionieren.
document.body.innerHTML+="<script>alert(1)</scr"+"ipt>";
Sie haben ähnliche
var tag = document.createElement("script");
tag.innerHTML="alert(1)";
document.body.appendChild(tag); //can be append to any object other than body
or Better jQuery
Das Problem besteht darin, dass das Skript in der Ajax-Nutzlast enthalten ist und an den Client innerhalb des DIV gesendet wird. Ich kann kein Skript zum Starten bekommen, sobald es beim Kunden ankommt, also gibt es ein Hühner- und Ei-Problem. –
Hallo, in Ajax zurück, was für ein Ergebnis? nur JavaScript-Codes? oder ein Skript-Tag einschließen? Wenn nur JavaScript-Codes, können Sie "eval" oder wenn Skript-Tag enthalten, können Sie oben genannten Beispiel in meinem Beitrag und ändern Sie "document.body" mit Ihrem div-Tag, und dort anhängen. – YOU
und könnten Sie Ihren Post mit mehr Informationen aktualisieren, wie Ihre Website und weitere Erklärungen? weil die Leute bemerken werden und sie auch Ihr aktuelles Problem herausfinden können, rgds – YOU
dort Verwendung mit DOM-Funktionen zu schreiben, ist jeder Code auf diese Frage verwandten verfügbar? – miku
sehr vage Frage. Code und Beispiele bitte. – mauris
- in der div-Tag-Client-Seite abgelegt. –