我有一个使用 window.location 的 JavaScript 函数,在 Firefox 和 Internet Explorer 中正常运行,但在 Chrome 中却无法正常工作。我已经在 Ubuntu Hardy 和 Windows Vista 上进行了测试。问题的根本原因是什么,如何规避它?
我有一个使用 window.location 的 JavaScript 函数,在 Firefox 和 Internet Explorer 中正常运行,但在 Chrome 中却无法正常工作。我已经在 Ubuntu Hardy 和 Windows Vista 上进行了测试。问题的根本原因是什么,如何规避它?
window.location
最常见的用法是让浏览器加载一个新页面。常见错误是将URL分配给window.location
对象而不是它的属性href
。因此,正确的方法是:
window.location.href = 'http://www.guffa.com';
window.location.href='http://google.com';
- Guffalocation
对象只是为了将其赋值给 href
属性的一种捷径。将一个字符串赋值给包含对象的属性在语义上并没有太多意义,但现在大多数浏览器似乎都支持这样做。 - Guffa尝试在您的 JavaScript 调用末尾添加 "return false;",例如:
window.location.href='google.com;
return false;
尝试不使用window.
。例如,使用location.assign()
代替window.location.assign()
。
我遇到了这个问题,最终发现是我的JavaScript函数在window.location标签之后返回了true(由于嵌套函数)。火狐和IE没有处理到那么远,而Chrome却处理了。
<!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>
问题已解决。 函数或 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()'),
);
我感到很傻。
我曾经遇到过同样的问题,但是我没有仔细检查新重定向的URL是否包含空格(我真是太丢人了)。
所以只有Chrome会在URL不规范时停止这个新位置。
如果你正在使用主页面,请确保你有一个UpdatePanel。