window.location在Chrome浏览器上不起作用。

15

我有一个使用 window.location 的 JavaScript 函数,在 Firefox 和 Internet Explorer 中正常运行,但在 Chrome 中却无法正常工作。我已经在 Ubuntu Hardy 和 Windows Vista 上进行了测试。问题的根本原因是什么,如何规避它?


8
请展示您正在使用的 JavaScript 函数,这会有所帮助... :) - Rob
4
-1 - 询问函数问题却期望我们猜测?需要帮助吗?请展示代码。+1 @Rob - Sky Sanders
3
没错,如果我能正确拼写“function”,那就更好了 ;) - Rob
1
代码在哪里?接受答案。 - JPJedi
1
请参考:https://dev59.com/H3VC5IYBdhLWcg3wfxQ8 - LCJ
7个回答

44

window.location最常见的用法是让浏览器加载一个新页面。常见错误是将URL分配给window.location对象而不是它的属性href。因此,正确的方法是:

window.location.href = 'http://www.guffa.com';

4
谢谢,Guffa。我之前使用的是 window.location = 'url',现在我已经更新为 window.location.href 了,但我仍然无法重定向。实际上,在 Chrome 中函数没有任何响应。我创建了下面的测试函数,在 IE 和 FF 中可以正常工作,但在 Chrome 中不行:[code] function testfunc() { var code = document.getElementById("edit-report-types").value; alert(code); window.location.href = 'google.com';} [/code] - Bad Programmer
@某人:你试过直接访问网站“google.com”而不是在当前网站中打开“google.com”页面吗?window.location.href='http://google.com'; - Guffa
1
是的。它仍然没有到那里。在Chrome中,它也不会警报代码变量。我在先前的评论中删除了一些代码,但我正在函数中声明一个变量(var code =“test!”),然后警报该变量。 FF和IE显示警报,尽管Chrome不显示。 - Bad Programmer
你对https://dev59.com/H3VC5IYBdhLWcg3wfxQ8中被接受的答案有什么看法? - LCJ
1
@Lijo:将一个字符串赋值给 location 对象只是为了将其赋值给 href 属性的一种捷径。将一个字符串赋值给包含对象的属性在语义上并没有太多意义,但现在大多数浏览器似乎都支持这样做。 - Guffa

24

尝试在您的 JavaScript 调用末尾添加 "return false;",例如:

window.location.href='google.com;
return false;

3
这已经确认在Chrome iOS上可行。如果有人能够解释一下,将不胜感激。 - curveorzos
1
我很震惊,但还是感谢有人提到了它! - Gerard ONeill

3

尝试不使用window.。例如,使用location.assign()代替window.location.assign()


2

我遇到了这个问题,最终发现是我的JavaScript函数在window.location标签之后返回了true(由于嵌套函数)。火狐和IE没有处理到那么远,而Chrome却处理了。


我没有返回任何明确的内容;在设置了window.location.href之后返回false,这样就可以工作了。 - Gerard ONeill

1
刚刚创建了以下的HTML文件,然后在Google Chrome 4.0中弹出了window.location的提示 - 你是使用旧版本吗?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
</head>
<body>

</body>
</html>
<script language="javascript" type="text/javascript">
alert(window.location);
</script>

1
window.location='http://stackoverflow.com'; 在Chrome 4.0中也有效,并重定向到该网站。 - amelvin

1

问题已解决。 函数或 Chrome 都没有问题。该函数应该由 Drupal 表单元素调用。我正在将调用该函数的 onclick 事件添加到 Drupal 表单本身,而不是特定的表单元素。

基本上就是这样:

$form['testform'] = array(
    '#type' => 'fieldset',
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
        '#attributes' => array(
        'onchange' => 'testfunc()'),
 );

不要这样写:

$form['testform']['element1'] = array(
    '#type' => 'select',
        '#options' => options,
        '#required' => false,
        '#attributes' => array(
        'onchange' => 'testfunc()'),

);

我感到很傻。


1
请接受您自己的问题的答案,以便其他人不必再来尝试回答它(点击左边的勾)。 - Basic

0

我曾经遇到过同样的问题,但是我没有仔细检查新重定向的URL是否包含空格(我真是太丢人了)。

所以只有Chrome会在URL不规范时停止这个新位置。

如果你正在使用主页面,请确保你有一个UpdatePanel。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接