【问题标题】:skip function if missing script如果缺少脚本则跳过函数
【发布时间】:2017-01-23 15:11:31
【问题描述】:

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

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

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

【问题讨论】:

  • undefined 为保留字,不得用作变量名

标签: javascript function onload undefined-function


【解决方案1】:

创建一个在加载时运行的匿名函数并检查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();
}

【讨论】:

  • == 测试相等时 === 测试身份
  • @soviut 开始功能在它一直存在的每个页面上,它的 randomHome 脚本并不存在于每个页面上......
  • 这仍然在 var randH = randomHome();
  • 函数 start() { var randH = randomHome(); if (randH == undefined) { return true;加载导航(); } else { randomHome();加载导航(); } } window.onload = 开始;
  • window.onload = function() { if (randomHome) { randomHome();加载导航(); } 其他 { loadNAV();} }; @soviut 这就是你的意思吗?问题是它仍然认为 randomHome 是未定义的。
【解决方案2】:

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

function start() {

if(window.randomHome == undefined )
{ 

    loadNAV();
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    相关资源
    最近更新 更多