1

我有一小段代码用于我正在处理的模板项目。有三个单独的按钮,指向三个单独的位置。为了使内容提供者更容易,我有这些按钮调用最小的例程来加载下一页。

代码如下:

    /* navigation functions here for clarity and ease of editing if needed */
    prevURL    = 'ch0-2.html';
    nextURL    = 'ch2-1.html';
    manURL     = 'ch1-2.html';

    function prevPage() {
       window.location = prevURL; 
    }

    function nextPage() {
        window.location = nextURL;
    }

    function goManager() {
        window.location = manURL;
    }

这在 Firefox 和 Chrome 中完美运行,但在 Internet Explorer 中似乎失败了。

我在 IE (F12) 中打开开发人员工具并显示以下消息:

SCRIPT5009:“manURL”未定义

位置信息(第 43 行,字符 13)指向代码的“window.location = manURL”部分。

但是,一旦开发人员工具打开,如果我按 F5 重新加载页面,该按钮将正常工作,直到我关闭 IE 并重新打开它,它再次无法响应并给出相同的“未定义”错误。

我很困惑。有人有想法么?

更新 我知道变量声明很差,我可以改用 window.location.href 。这里重要的是,其他两段代码在所有这些重要方面都相同,但无论哪种方式都可以完美运行。

epascarello让我走上了正轨。通过删除所有console.log命令,一切都开始工作了。我只是想知道为什么会发生这种情况,并希望能够感谢 epascarello 对我的帮助。

4

3 回答 3

2

当开发者窗口未打开时,IE 没有控制台命令。因此,如果您将它们放在那里,则代码将无法运行。它会出错。

您可以注释掉这些行或添加一些代码来添加缺少的内容。

if (typeof console === "undefined") {
   console = {
       log : function(){},
       info : function(){},
       error : function(){}
       //add any others you are using
   }
}
于 2013-03-06T19:28:03.347 回答
1

尝试设置

window.location.href

而不仅仅是window.location。

来源: http ://www.webdeveloper.com/forum/showthread.php?105181-Difference-between-window.location-and-window.location.href

于 2013-03-06T18:50:02.273 回答
0

始终在使用变量之前定义变量,明确(表达意图)是一个好习惯,

所以像这样定义你的变量,

var prevURL    = 'http://google.com';
var nextURL    = 'http://msn.com';
var manURL     = 'http://stackoverflow.com';

您可以尝试使用

window.location.href

参考这篇文章的区别

建议: 为我们制作一个jsfiddle.net,以便我们轻松指导您

于 2013-03-06T18:55:56.057 回答