'undefined'不是评估Safari中el.click()的函数

Hyp*_*zeR 8 javascript

我想按下Enter按钮运行js功能.在IE,Chrome和Opera中,一切都很好用,但我在Safari中遇到了错误(如下所述).

我需要一个纯粹的Javascript解决方案,而不是jQuery.

这是功能:

function pressSearch(e) {
    if (typeof e == 'undefined' && window.event) {
        e = window.event;
    }
    var charCode = (e.which) ? e.which : 
                   ((e.charCode) ? e.charCode : 
                   ((e.keyCode) ? e.keyCode : 0));
    if (charCode == 13) {
        document.getElementById('enterSearch').click();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是HTML:

<input type="text" id="searchKey" onkeypress="pressSearch(event)">
<div id="enterSearch">Search</div> // This is the "button"
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

// Safari
TypeError: 'undefined' is not a function 
    (evaluating 'getElementById('enterSearch').click()')
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

编辑:我修复了Mozilla Firefox错误.

lqc*_*lqc 18

如果你看一下HTML DOM Level 2 Specification,那么这个click()函数只是定义了HTMLInputElement,所以虽然不是非常用户友好的Safari不需要实现它.

触发现代浏览器事件的正确方法是在DOM Level 3事件中:

// First create an event
var click_ev = document.createEvent("MouseEvents");
// initialize the event
click_ev.initEvent("click", true /* bubble */, true /* cancelable */);
// trigger the event
document.getElementById("someElement").dispatchEvent(click_ev);
Run Code Online (Sandbox Code Playgroud)

这是适用于Chrome,Safari,Firefox和IE9的jsfiddle:http://jsfiddle.net/y5yW9/6/