为什么Chrome和Firefox会以不同方式处理Javascript链接?

时间:2012-01-27 05:41:32

标签: javascript firefox google-chrome

我有一个在FireFox 9.0.1中完美运行的网站。

在Chrome 16中,它发生了灾难性的失败。通过它们的错误太多了。

然而,要选择一个问题(并希望它是一个有助于阐明核心问题的线索),我有一些由Javascript驱动的按钮,只需将某人带到新页面即可。

这些按钮的代码非常简单:

var siteURL = "http://mywebsite.com/";
function goHome()
{
    window.location = siteURL + "index.html";
}

在FireFox中,如果我单击执行此代码的按钮,我将被带到index.html。容易腻。

在Chrome中,如果我点击此按钮,我会收到一个404错误页面,上面写着:

  

在此服务器上找不到请求的网址/undefinedindex.html。

为什么这些浏览器的行为方式不同?

如何让Chrome播放?


根据评论中的要求,我将alert(siteURL);放入函数中。

Firefox输出:

  

http://mywebsite.com/

Chrome输出

  

未定义

3 个答案:

答案 0 :(得分:1)

您不应使用window.location.而是将网址分配给window.location.href

因此,应该是

function goHome()
{
    window.location.href = siteURL + "index.html";
}

而且......你得到'未定义'的值,因为你可能没有为siteURL分配任何值,或者你忘了声明它。确保它确实指向您当前的根网址(如果您希望它)

答案 1 :(得分:1)

适用于Chrome 16:

<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
window.siteURL = "http://mywebsite.com/";
function goHome() {
    console.log('moo?');
    window.location.href = window.siteURL + "index.html";
}
</script>

</head>
<body>

    <a href="#" onclick="goHome(); return false;">go home</a>

</body>

</html>

答案 2 :(得分:0)

如果所有浏览器的行为完全相同,我就会失业。

如果没有看到完整的代码,就无法确定究竟出了什么问题。

从片段abobe判断,必须有一些其他功能(与goHome在同一范围内)将undefined分配给siteURL并在goHome之前调用