window.location.href当点击按钮时将浏览器重定向到stackoverflow.com,但在输入文本框中按下“Enter”时不会重定向尽管两个事件监听器使用相同的函数visitStack。Javascript:window.location.href在函数内调用函数时不重定向
如果有帮助,将表单标签更改为div标签可以使其工作,但它不是语义的,当然。
将最后一行中的“keydown”改为“click”,并在keyDownTextField(e)中立即移动visitStack(e),使其工作。
因此keydown和/或表单标签似乎是这里的罪魁祸首,但我不确定。
<form>
<input id="iamtext" type="text" />
<input id="gobutton" type="button" value="Overflow" />
</form>
<script type="text/javascript">
document.getElementById("gobutton").addEventListener("click", visitStack, false);
function visitStack(e) {
e.stopPropagation();
window.location.href = "http://www.stackoverflow.com";
}
function keyDownTextField(e) {
var keyCode = e.keyCode;
if(keyCode==13) {
alert("Entered!");
visitStack(e);
}
}
document.getElementById("iamtext").addEventListener("keydown", keyDownTextField, false);
</script>
不应该是document.location.href? – artemb 2010-03-03 08:20:47
我总是只使用“window.location = newURL;” 请参阅:https://developer.mozilla.org/En/DOM/Window.location – Laimoncijus 2010-03-03 08:30:22
@artemb两者都可以在Firefox中使用Firebug控制台进行测试。 'console.log(window.location === document.location);'打印'true' – Amarghosh 2010-03-03 08:31:20