这是一个简单的场景,点击事件在Firefox中运行正常但不是IE。让我们详细介绍一下。我有一个按钮,如下所示:
<h:form id="theForm">
<h:commandLink id="theButton" styleClass="button" action="#{theBean.doWork}"/>
</h:form>
当我尝试从JavaScript调用按钮的click事件时:
document.getElementById('theForm:theButton').click();
根据这个thread,我需要像下面这样输入代码:
<script language="javascript" type="text/javascript">
HTMLElement.prototype.click = function() {
var evt = this.ownerDocument.createEvent('MouseEvents');
evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
this.dispatchEvent(evt);
}
但是当我在我的JavaScript中使用此代码时,它确实可以在Firefox中运行,但不再在IE中运行了。我可以知道如何在IE和Firefox上运行它?
答案 0 :(得分:2)
尝试:
if(!HTMLElement){
var HTMLElement = Element;
}
HTMLElement.prototype.click = function() {
var evt = this.ownerDocument.createEvent('MouseEvents');
evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
this.dispatchEvent(evt);
}
这适用于IE&gt; = 8,它使用Element
在其他浏览器中提供相同的接口HTMLElement
。
答案 1 :(得分:0)
您可以使用jQuery尝试:
$("#theButton").click(function() {alert("Handler for .click() called.");});
答案 2 :(得分:0)
错过了分号 - IE不是那样的
<script language="javascript" type="text/javascript">
HTMLElement.prototype.click = function() {
var evt = this.ownerDocument.createEvent('MouseEvents');
evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
this.dispatchEvent(evt);
};
是的,请务必修补HTMLElement
var HTMLElement =HTMLElement===undefined?Element:HTMLElement;