现在的位置: 首页 > 综合 > 正文

chrome某些版本 的click事件无响应 解决

原始代码:
 
标签:<a id="OpenWindow" target= "_blank" href="#" style="display:none"></a>
<a id="OpenWindow" target= "_blank" href="#" style="display:none"></a><a id="OpenWindow" target= "_blank" href="#" style="display:none"></a><a id="OpenWindow" target= "_blank" href="#" style="display:none"></a>js:
    url = "/exam/examflow_loading.action?forward=loading&batchId="+examId+"&examType=COLLEGEEXAM"; 
    var a = document.getElementById("OpenWindow");
    a.setAttribute("href", url);
    a.click();
 
修改后JS:
    url = "/exam/examflow_loading.action?forward=loading&batchId="+examId+"&examType=COLLEGEEXAM";
    var a = document.getElementById("OpenWindow");
    a.setAttribute("href", url);
    invokeClick(a); //调用click事件
function invokeClick(element) {
if (element.click)
element.click(); //判断是否支持click() 事件
else if (element.fireEvent)
element.fireEvent('onclick'); //触发click() 事件
else if (document.createEvent) {
var evt = document.createEvent("MouseEvents"); //创建click() 事件
evt.initEvent("click", true, true); //初始化click() 事件
element.dispatchEvent(evt); //分发click() 事件
}
}
 
其中事件初始化的函数和参数的介绍:
void initEvent(String eventTypeArg, boolean canBubbleArg, boolean cancelableArg)
initEvent 方法用于初始化通过 DocumentEvent 接口创建的 Event 的值。此方法只能在通过 dispatchEvent 方法指派 Event 之前调用,尽管在该阶段可以多次调用它(如有必要)。如果被多次调用,则最后一次调用优先。如果从 Event 接口的子类调用,则只修改在 initEvent 方法中指定的值,所有其他属性保持不变。
 
参数:
eventTypeArg - 指定事件类型。此类型可以是当前在此规范中定义的任何事件类型,或是一个新的事件类型。该字符串必须是 XML 名称。任何新的事件类型一定不能以字符串 "DOM" 的大写、小写或混合大小写版本开头。此前缀是为以后的 DOM 事件集保留的。还强烈推荐添加自己的事件的第三方使用自己的前缀以避免混淆,降低与其他新的事件发生冲突的可能性。
canBubbleArg - 指定该事件是否可以 bubble。
cancelableArg - 指定是否可以阻止事件的默认操作

抱歉!评论已关闭.