2017-05-02 3 views
0

Ich rufe eine Funktion load() auf Körper Onload-Ereignis. Manchmal funktioniert diese Funktion und manchmal nicht. Soweit ich weiß, wird diese Funktion nicht aufgerufen, bis der Körper vollständig geladen ist. Gibt es eine Möglichkeit, diese Funktion aufzurufen, bevor die Seite geladen wird? HierRufen Sie JavaScript-Funktion vor dem Laden der Seite

ist home.html:

<script src="js/custom.js"></script> 
<script src="js/props.json"></script> 
<body onload="load()"> 

<a id="beginner">Beginner Level</a> 
     <div id="beginner-sub" class="well"> 
      <!-- append content here --> 
     </div> 

</body> 

custom.js Ladefunktion:

function load() { 
    var mydata = JSON.parse(beginner); 
    var rows = ""; 
    for(var x=0; x < mydata.length; x++) 
    { 
    rows += '<a href="'+mydata[x].url+'">'+mydata[x].title+'<i class="fa fa-hand-o-right pull-left" aria-hidden="true"></i></a><hr>'; 
    } 
    $("#beginner-sub").append(rows); 
    $("#beginner-sub hr:last-child").remove() 
} 

Und das ist mein props.js

beginner = '[{"title" : "Simple Program", "url" : "simple.html"}, {"title" : "Check Palindrome", "url" : "palindrome.html"}]'; 
+0

Nein scheitern, aber Sie können ein Skript-Tag unmittelbar nach dem Körper hinzufügen. – LGSon

+0

Gibt es in meiner Antwort etwas, das ich hinzufügen und akzeptieren kann? – LGSon

Antwort

2

Nein, kann das Ereignis body onload nicht erzwingen (oder nicht erzwingen), aber Sie können ein Skript-Tag unmittelbar nach dem betreffenden Element hinzufügen.

<a id="beginner">Beginner Level</a> 
<div id="beginner-sub" class="well"> 
    <!-- append content here --> 
</div> 
<script>load();</script> 

Sie allerdings zur Kenntnis, dass alle anderen Funktionen der load() hängt davon ab, muss geladen wurden oder sonst wird es

2

Wenn Sie den Code in dem Skript-Tag verschieben Sie es sofort ausgeführt wird, wenn gefunden:

<head> 
... 
<script type="text/javascript"> 
    alert("executed now"); 
</script> 
</head> 

Dies ist für etwa Ausführung von Code auf Ihre Frage zu beantworten, bevor Seite geladen wird. Wenn Sie jedoch auf ein Element zugreifen, müssen Sie sicherstellen, dass dieser Code ausgeführt wird, nachdem das Element geladen wurde.

p.s. Sie können auch Ihren Code aufteilen, den JSON vor dem Laden der Seite analysieren, die Ergebnisse in einer Variablen speichern und dann Elemente hinzufügen, nachdem die Seite geladen wurde.

+0

Ja, obwohl es als Skript-Zugriffselement fehlschlägt, da sie noch nicht geladen sind – LGSon

+0

Sie könnten Ihren Code aufteilen, den JSON vor dem Laden der Seite analysieren, Ergebnisse in einer Variablen speichern und dann Elemente nach dem Seitenwechsel anhängen geladen. Es könnte das Problem beheben – quirimmo

Verwandte Themen