2017-01-23 80 views
1

我正在內容管理系統中構建,因此我必須利用加載功能進行創意。如果缺少腳本,則跳過功能

我有2個腳本在加載時運行。主頁的隨機背景圖像和導航菜單。我將它們都包含在一個單獨的腳本中,可以在加載時運行獲取背景圖片的唯一頁面是主頁。因此,在沒有鏈接隨機主頁腳本的所有其他頁面上,腳本錯誤和菜單不會加載。

我想先執行背景圖片。一個糟糕的解決辦法是首先加載菜單,並讓隨機主頁腳本在任何子頁面上打破,但這不是理想的,我希望找到一個解決方案。

我想先載入圖像,然後運行導航腳本。如果圖像腳本未定義,我希望它跳過,然後執行導航腳本。

這裏是我的代碼:

function start() { 

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

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

window.onload = start; 

的2個功能,當這樣的列在單獨的文件和工作就好了被鏈接:

function start() { 

    loadNAV(); 
    randomHome(); 

} 

window.onload = start; 

但是這留下的子頁面沒有錯誤獲取背景圖片。所以我正在尋找一個沒有錯誤的答案,首先加載背景圖像,或跳過它,然後導航。

+2

'undefined'是保留字,不能用作變量名 – evolutionxbox

回答

2

創建一個匿名函數,該函數在加載時運行並檢查start()函數的存在。如果存在,請調用它。

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

刪除undefined = false行。 undefined是一個保留關鍵字,已經評估爲「falsy」,您所做的工作會對依賴關鍵字undefined的任何內容造成很多問題。相反,更改if語句以使用==而不是=====評估等於,===評估身份。

如果您試圖阻止randomHome()腳本運行(如果它不存在),則會在start()函數內使用相同的代碼。

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

==測試相等時===測試身份 – Aubin

+0

@soviut啓動功能是它alwasy存在的每一頁上,其randomHome腳本不存在於每個頁面上... – Valerie

+0

這仍然在var randH = randomHome(); – Valerie

0

這是什麼結束了工作。謝謝大家。

function start() { 

if(window.randomHome == undefined) 
{ 

    loadNAV(); 
} 

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