Javascript变量在IE中未定义,直到控制台显示

Javascript variable undefined in IE until console displayed

本文关键字:控制台 显示 未定义 变量 IE Javascript      更新时间:2023-09-26

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

代码如下:

    /* 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)指向"窗口"。location = manURL"部分的代码。

然而,一旦开发人员工具打开,如果我按F5重新加载页面,该按钮工作没有错误,直到我关闭IE并重新打开它,它再次未能响应并给出相同的"未定义"错误。

我困惑。有人有什么想法吗?

我知道变量声明很糟糕,我可以使用window.location.href代替。与此相关的是,另外两段代码,它们在所有这些重要的方面都是相同的,无论哪种方式都可以完美地工作。

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

当开发者窗口未打开时,IE没有控制台命令。如果你有它们,代码就不会运行。它会出错。

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

if (typeof console === "undefined") {
   console = {
       log : function(){},
       info : function(){},
       error : function(){}
       //add any others you are using
   }
}

尝试设置

window.location.href

而不是window.location.

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

始终在使用变量之前定义它们,明确(表达意图)是一种良好的实践,

所以像这样定义你的变量

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

您可以尝试使用

window.location.href

参考这篇文章

建议:为我们创建一个jsfiddle.net,以便我们可以轻松地指导您