为什么在单击带有JavaScript的按钮时需要这行代码?

时间:2013-05-23 19:13:59

标签: javascript browser

此解决方案已提供给this question,询问在输入字段中按 Enter 时如何触发HTML按钮。

<input type="text" id="txtSearch" onkeypress="searchKeyPress(event);" />
<input type="button" id="btnSearch" Value="Search" onclick="doSomething();" />

<script>
function searchKeyPress(e)
{
    // look for window.event in case event isn't passed in
    if (typeof e == 'undefined' && window.event) { e = window.event; }
    if (e.keyCode == 13)
    {
        document.getElementById('btnSearch').click();
    }
}
</script>

为什么if (typeof e == 'undefined' && window.event) { e = window.event; } nescecary?它似乎在检查参数是否没有正确传递,为什么不呢?这与修复浏览器兼容性问题有关吗?

1 个答案:

答案 0 :(得分:7)

因为旧的IE版本是一个可怕的憎恶,使用全局变量event而不是任何理智的开发人员会使用的函数参数。

出于同样的原因(oldIE开发人员疯了)你不能在oldIE中使用.addEventListener()但是必须使用.attachEvent()

编辑:刚看到您正在使用内联事件并始终传递该事件。这样,您将在函数的第一个参数中始终拥有一个有效的事件对象。您不需要其他代码。