Beim Laden über die schöne jQuery.ajax()-Funktion wollten wir nicht nur die Inhalte eines bestimmten DIVs austauschen, sondern auch alle JavaScripte im neuen DIV ausühren. Leider werden alle Script-Tags automatisch „bereinigt“ bevor man sie in das DOM einfügen kann. Nach einigen Versuchen kamen wir dann auf folgende Lösung.
$.ajax({
url: "http://....",
success: function ( data ) {
// Dieses DIV soll ersetzt werden - und alle script-Tags innerhalb des DIVs ausgeführt werden
var target=".testdiv";
// Erst mal den Inhalt des DIVs mit dem neuen Inhalt ersetzen
$(target).html( $(target, data).contents() );
// Jetzt über ein paar Umwege die gewünschten Script-Tags innerhalb des DIVs finden und ausführen
var div = document.createElement('div');
div.innerHTML = data;
var ref = $($(div).find(target).html());
ref.filter('script').each(function () {
$.globalEval(this.text || this.textContent || this.innerHTML || '');
});
}
});
Für Suchmaschinen: „jQuery Ajax Script-Tag“ „execute script tags jquery ajax response“ „script tags ajax response“ „script in div ajax response“ „einzelne script-Tags ausführen jquery ajax“ „jquery script clean“ „ajax javascript script ausführen“