2017-01-23 15 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'が予約語であるとスタート機能@soviutアイデンティティ – evolutionxbox

答えて

2

ロード時に実行される匿名関数を作成し、start()関数の存在をチェックします。存在する場合は、それを呼び出します。

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

undefined = false行を削除します。 undefinedは予約済みのキーワードであり、既に「偽物」と評価されており、あなたがしたことは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

==テストとして使用することはできません、そのすべてのページに存在しないrandomHomeスクリプト... – Aubin

+0

について===テストはそれがalwasy存在するすべてのページにあるときに平等のための変数名 – Valerie

+0

これはまだvar randH = randomHome()で壊れています。 – Valerie

0

これは結局のところ機能しました。皆さんありがとう。

function start() { 

if(window.randomHome == undefined) 
{ 

    loadNAV(); 
} 

else { 
     randomHome(); 
     loadNAV(); 
} 
} 
window.onload = start; 
関連する問題