当单击按钮时,window.location.href将浏览器重定向到stackoverflow.com,但在输入文本字段中按“Enter”键时不会重定向,尽管两个事件侦听器都使用相同的函数visitStack。
如果更改表单标记为div标记,则可以使其工作,但这当然不是语义化的。
将最后一行中的“keydown”更改为“click”,并立即将visitStack(e)移动到keyDownTextField(e)中,也可以使其工作。
因此,keydown和/或表单标记似乎是罪魁祸首,但我不确定。
如果更改表单标记为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>
console.log(window.location === document.location);
输出true
。 - Amarghosh