如果缺少脚本

时间:2017-01-23 15:11:31

标签: javascript function onload undefined-function

我正在内容管理系统中构建,因此我必须使用加载功能获得创意。

我有2个脚本在加载时运行。主页和导航菜单的随机背景图像。我将它们都包含在一个在加载时运行的单独脚本中。获取背景图像的唯一页面是主页。所以在没有链接随机主页脚本的所有其他页面上,脚本出错并且菜单没有加载。

我希望首先执行背景图像。一个糟糕的工作是首先加载菜单,并让随机主页脚本在任何子页面上中断,但这不是理想的,我希望找到一个解决方案。

我想首先加载图像,然后运行导航脚本。如果图像脚本未定义,我希望它跳过,并执行导航脚本。

这是我的代码:

function start() {

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

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

window.onload = start;

这两个函数链接在不同的文件中,如下所示,工作正常:

function start() {

  loadNAV();
  randomHome();  

}

window.onload = start;

但是这会在没有获得背景图像的子页面上留下错误。所以我正在寻找一个没有错误的答案,首先加载背景图像,或者跳过它,然后导航。

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

这就是最终的工作。谢谢大家。

function start() {

if(window.randomHome == undefined )
{ 

    loadNAV();
}

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