Javascript:window.location.href不';在函数中调用函数时不重定向
window.location.href在单击按钮时将浏览器重定向到stackoverflow.com,但在输入文本字段中单击“Enter”时不会重定向,尽管两个事件侦听器使用相同的函数visitStack 如果这有帮助的话,将表单标记更改为div标记会使其工作起来,但这当然不是语义上的 将最后一行中的“keydown”更改为“click”,并将visitStack(e)立即移动到keyDownTextField(e)中,使其也能工作 所以keydown和/或表单标签似乎是罪魁祸首,但我不确定Javascript:window.location.href不';在函数中调用函数时不重定向,javascript,Javascript,window.location.href在单击按钮时将浏览器重定向到stackoverflow.com,但在输入文本字段中单击“Enter”时不会重定向,尽管两个事件侦听器使用相同的函数visitStack 如果这有帮助的话,将表单标记更改为div标记会使其工作起来,但这当然不是语义上的 将最后一行中的“keydown”更改为“click”,并将visitStack(e)立即移动到keyDownTextField(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.getElementById(“gobutton”).addEventListener(“单击”,visitStack,false);
功能访问策略(e){
e、 停止传播();
window.location.href=”http://www.stackoverflow.com";
}
功能键向下文本字段(e){
var-keyCode=e.keyCode;
如果(键代码==13){
警报(“已输入!”);
visitStack(e);
}
}
document.getElementById(“iamtext”).addEventListener(“keydown”,keyDownTextField,false);
在HTML表单中的文本输入字段中点击输入
,在不同的浏览器上会有不同的效果
在您的情况下,我假设表单是在按ENTER键时提交的。由于您没有指定任何
操作
,表单将提交到同一页面,导致重新加载。您也可以尝试将e.preventDefault()
以及e.stopPropagation()
添加到visitStack()。它不应该是document.location.href吗?我总是只使用“window.location=newURL;”请参阅:@artemb在Firefox中使用Firebug控制台进行测试时都可以工作<代码>控制台.log(window.location==文档.location)打印true
window.location和document.location在页面位于iframe中时会有所不同。所以这可能不是竞争条件?