b-free
Goto Top

DOM tree wird nach AJAX nicht neu geladen bzw. innerHtml bleibt undefined...

Hallo Community,

ich bin ein JS/ AJAX Neuling. Mein AJAX lädt ein <script>...</script>, welches nach W3C Standard ja nicht ausgeführt wird. Die (vermeindliche) Lösung:
	alert (document.getElementById("display1"));           //output:  [object HTMLDivElement]  
	alert (document.getElementById("display1").innerHtml); //output:  undefined  (kein DOM update?)  
	var arr = document.getElementById("display1").getElementsByTagName('script');  
	alert (arr);                                           //output:  [object NodeList] (soweit korrekt, ist ja ein Array mit DOM nodes)
	alert (arr);                                        //output:  [object HTMLScriptElement] (Also doch ein DOM update, das <script> wurde erkannt)
	for (var n = 0; n < arr.length; n++)
		eval(arr[n].innerHTML)//run script inside div

Das <script> wird nicht ausgeführt....

Erst, wenn ich den selben Code in die Konsole eingebe, geht es...


Auch mit onload, delay etc... Es geht nicht...


Tschau
B-Free


PS: Ich habe es in mehreren Browsern getestet

Content-Key: 239717

Url: https://administrator.de/contentid/239717

Printed on: April 20, 2024 at 00:04 o'clock

Member: nxclass
nxclass Jun 01, 2014 updated at 21:25:08 (UTC)
Goto Top
Hallo - kleiner Tipp: lade den JS code als zusätzlichen script Node in den header Node - das sollte funktionieren.

test.html
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
        <script type="text/javascript">  
document.include = function( src )
{
    e = document.createElement('script');  
    e.setAttribute('type', 'text/javascript');  
    e.setAttribute('src', src);  
    this.getElementsByTagName('head').item(0).appendChild(e);  
}
        </script>
    </head>
    <body>
        <input type="button" onclick="document.include('js/test.js');" name="load" value="load" />  
    </body>
</html>

test.js
alert('success');  
Member: B-free
B-free Jun 02, 2014 at 10:34:57 (UTC)
Goto Top
Ähm.... Okay.


Ich habe leider nicht verstanden (oder nur in den Grundzügen) was dein Vorschlag war.

Soll ich die <script> Tags aus dem AJAX request in den head schreiben?


Soweit
B-Free
Member: nxclass
Solution nxclass Jun 02, 2014, updated at Jun 10, 2014 at 15:59:06 (UTC)
Goto Top
Soll ich die <script> Tags aus dem AJAX request in den head schreiben?
ja - beachte dass die script Tags innerhalb des body nur beim Laden der Webseite ausgeführt werden.

Weiterhin solltest Du versuchen dein JS so zu schreiben, dass es aus einer *.js Datei geladen werden kann - so kannst du den HTML und JS Code sauber trennen. Meistens sollte die gesamte JS Logik bereits geladen sein und nur HTML Fragmente werden per Ajax nachgeladen.
Member: B-free
B-free Jun 04, 2014 at 06:05:42 (UTC)
Goto Top
Weiterhin solltest Du versuchen dein JS so zu schreiben, dass es aus einer *.js Datei geladen werden kann - so kannst du den HTML
und JS Code sauber trennen. Meistens sollte die gesamte JS Logik bereits geladen sein und nur HTML Fragmente werden per Ajax
nachgeladen.

Danke!

Super! So werde ich das gleich mal testen. :D