2017-01-23 4 views
1

Ich bin in einem Content-Management-System, so dass ich mit Ladefunktionen kreativ werden muss.Funktion überspringen, wenn Skript fehlt

Ich habe 2 Skripts auf Last ausgeführt. Ein zufälliges Hintergrundbild für die Startseite und das Navigationsmenü. Ich habe beide in ein separates Skript eingefügt, das beim Laden ausgeführt wird. Die einzige Seite, um das Hintergrundbild zu erhalten, ist die Startseite. Auf allen anderen Seiten, auf denen das zufällige Home-Skript nicht verlinkt ist, ist das Script fehlerhaft und das Menü wird nicht geladen.

Ich möchte, dass das Hintergrundbild zuerst ausgeführt wird. Eine schlechte Arbeit besteht darin, zuerst das Menü zu laden und das zufällige Home-Skript auf irgendwelchen Unterseiten zu brechen, aber das ist NICHT ideal und ich hoffe, eine Lösung zu finden.

Ich möchte zuerst das Bild laden und dann das Navigationsskript ausführen. Und falls das Bildskript nicht definiert ist, möchte ich es überspringen und das Navigationsskript ausführen.

Hier ist mein Code:

function start() { 

var randH = randomHome(); 
var undefined = false; 
if (randH === undefined) { 
    loadNAV(); 
} 

    else { 
     randomHome(); 
     loadNAV(); 
     } 
} 

window.onload = start; 

Die 2 Funktionen in separaten Dateien und Arbeit verbunden sind nur gut, wenn wie folgt aufgeführt:

function start() { 

    loadNAV(); 
    randomHome(); 

} 

window.onload = start; 

Aber dies lässt Fehler auf Unterseiten, die nicht tun hol dir das Hintergrundbild. Also suche ich nach einer Antwort ohne Fehler, die zuerst das Hintergrundbild lädt oder überspringt und dann die Navigation.

+2

'undefined' ist ein reserviertes Wort und darf nicht als Variablennamen – evolutionxbox

Antwort

2

Erstellen Sie eine anonyme Funktion, die beim Laden ausgeführt wird und das Vorhandensein der start()-Funktion überprüft. Wenn es existiert, rufen Sie es an.

window.onload = function() { 
    if (start) { 
     start(); 
    } 
}; 

Entfernen Sie die undefined = false Zeile. undefined ist ein reserviertes Schlüsselwort und wird bereits als "falsy" bewertet. Was Sie getan haben, verursacht viele andere Probleme, die sich auf das Schlüsselwort undefined beziehen. Ändern Sie stattdessen die if-Anweisung, um == statt === zu verwenden. == wertet die Gleichheit aus, === wertet Identität aus.

Wenn Sie verhindern möchten, dass das Skript randomHome() ausgeführt wird, wenn es nicht existiert, wird derselbe Code innerhalb der start()-Funktion verwendet.

function start() { 
    // only call randomHome function if it exists 
    if (randomHome) { 
     var home = randomHome(); 
     // anything else to do with the homes goes here 
    } 

    // load the nav regardless of whether randomHome exists 
    loadNAV(); 
} 
+0

für Gleichheit == Test verwendet werden, wenn === Test für Identität – Aubin

+0

@soviut der Start-Funktion ist auf jeder Seite, es existiert alwasy seine das randomHome-Skript, das nicht auf jeder Seite existiert ... – Valerie

+0

Das bricht immer noch bei var ab randH = randomHome(); – Valerie

0

Dies ist, was am Ende funktionierte. Danke allen.

function start() { 

if(window.randomHome == undefined) 
{ 

    loadNAV(); 
} 

else { 
     randomHome(); 
     loadNAV(); 
} 
} 
window.onload = start; 
Verwandte Themen