1

我正在构建内容管理系统,因此我必须在加载功能方面发挥创造力。

我有 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;

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

4

2 回答 2

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();
}
于 2017-01-23T15:13:04.397 回答
0

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

function start() {

if(window.randomHome == undefined )
{ 

    loadNAV();
}

else {
        randomHome();
        loadNAV();
}
}
window.onload = start;
于 2017-01-23T16:10:58.720 回答