我正在处理一个模板项目的一小段代码。有三个单独的按钮,指向三个不同的位置。为了使内容提供者更容易,我让这些按钮调用最小例程来加载下一页。
代码如下:
/* 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以帮助我。
答案 0 :(得分:2)
当开发人员窗口未打开时,IE没有控制台命令。因此,如果你在那里,代码将无法运行。它会出错。
您可以注释掉这些行,也可以添加一些代码来添加缺少的内容。
if (typeof console === "undefined") {
console = {
log : function(){},
info : function(){},
error : function(){}
//add any others you are using
}
}
答案 1 :(得分:1)
尝试设置
window.location.href
而不仅仅是window.location。
答案 2 :(得分:0)
在使用变量之前始终定义变量,明确(表达意图)是一种很好的做法,
所以定义你的变量,
var prevURL = 'http://google.com';
var nextURL = 'http://msn.com';
var manURL = 'http://stackoverflow.com';
您可以尝试使用
window.location.href
refer to this post for difference
<强>建议:强> 为我们制作一个jsfiddle.net,以便我们可以轻松指导您