javascript - 为什么这个简单的 "confirm"javascript 函数会出现意外行为

标签 javascript firefox

系统管理员和编码无知试图制作一个简单的工作页面。它有一个简单的 javascript 函数:

function run(job){
    var ok = confirm("Are you sure?");
    if(ok == true){
        location = 'job.php?op=' + job;
        window.location.href = location;
    } else {
        window.location.reload();
    }
}

通过一个简单的按钮调用:

<button style="color: red" onclick="run('test1');">Test1</button>

这里的关键字很简单,就像我的理解。

这在 Chrome 中有效,但按钮在 Firefox 中没有任何作用(两种浏览器的当前版本)。

在尝试调试脚本时,我在 .href 之前添加了一个简单的警告行,因此脚本如下所示:

function run(job){
    var ok = confirm("Are you sure?");
    if(ok == true){
        location = 'job.php?op=' + job;
        alert(location);
        window.location.href = location;
    } else {
        window.location.reload();
    }
}

... 然后该脚本也适用于 Firefox。我可以看到警报短暂出现,但它立即重定向并在几分之一秒内消失。但在 Chrome 中,弹出窗口仍然存在,因此这不是一个好的解决方法,而且 Firefox 中的行为很奇怪,这告诉我我做错了。

我的问题是,为什么脚本的行为不一致,我怎样才能避免这种行为以使其在两种浏览器中保持一致,并且不需要额外的 alert()?

最佳答案

我认为问题可能在于 location 在该上下文中等同于 window.location。由于您没有将 location 设为局部变量,因此它将是一个隐含的全局变量。

将您的 location 变量重命名为其他名称或使用“var location”将其更改为局部变量:

    var location = 'job.php?op=' + job;
    alert(location);
    window.location.href = location;

关于javascript - 为什么这个简单的 "confirm"javascript 函数会出现意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13156709/

相关文章:

html - 在所有现代浏览器中获得相同的阴影(IE 版本 9 除外)

macos - Firefox 中的 Mac 服务已弃用?

javascript - 存储高分 JavaScript

javascript - 使用push函数在json文件中添加变量值

Javascript 测验没有进行到下一个

ruby - 自动化 Web 访问和 Watir

google-chrome - 为什么无法下载状态代码为 4XX 和 5XX 的文件

javascript - CORS 请求在 Firefox 中不起作用,但在 Chrome 和 Safari 中起作用

javascript - 检查 isDate 返回无效日期

javascript - 删除javascript中行首的逗号