在IE中,我可以从JavaScript中调用
element.click()
- 我应该如何在Firefox中完成同样的任务?理想情况下,我希望有一些JavaScript代码可以跨浏览器平台通用,但如果必要的话,我也可以为每个浏览器编写不同的JavaScript代码。element.click()
- 我应该如何在Firefox中完成同样的任务?理想情况下,我希望有一些JavaScript代码可以跨浏览器平台通用,但如果必要的话,我也可以为每个浏览器编写不同的JavaScript代码。document.createEvent
文档中说:“createEvent方法已过时,应使用事件构造函数代替。”
因此,您应该改用这种方法:
var clickEvent = new MouseEvent("click", {
"view": window,
"bubbles": true,
"cancelable": false
});
并在元素上触发它,就像这样:
element.dispatchEvent(clickEvent);
如此处所示。
dispatchEvent(clickEvent);
的代码是:var element = document.getElementById("id-tag");
- kbpontius对于火狐浏览器来说,链接似乎是"特殊的"。我能够使其正常工作的唯一方法是使用createEvent,在MDN上描述的并调用initMouseEvent函数。即使如此,它也不能完全正常工作,我还需要手动告诉浏览器打开一个链接...
var theEvent = document.createEvent("MouseEvent");
theEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
var element = document.getElementById('link');
element.dispatchEvent(theEvent);
while (element)
{
if (element.tagName == "A" && element.href != "")
{
if (element.target == "_blank") { window.open(element.href, element.target); }
else { document.location = element.href; }
element = null;
}
else
{
element = element.parentElement;
}
}
<a onclick="someFunction()">点击我</a>
,但不适用于使用以下格式的情况 <a href="javascript:someFunction()">点击我</a>
。 - Jacob Mouka以下是代码:
function eventFire(el, etype){
if (el.fireEvent) {
el.fireEvent('on' + etype);
} else {
var evObj = document.createEvent('Events');
evObj.initEvent(etype, true, false);
el.dispatchEvent(evObj);
}
}
el [etype]();
来使IE触发本地事件(我正在测试点击处理程序-请参见http://jsfiddle.net/Pc8qE/)。 - Lessan Vaezi您是想要实际跟随链接还是触发onclick?您可以使用以下代码触发onclick:
var link = document.getElementById(linkId);
link.onclick.call(link);
<input type="button" id="btnEmailHidden" style="display:none" />
<input type="submit" id="btnEmailHidden2" style="display:none" />
// 在 JavaScript 中
var hiddenBtn = document.getElementById("btnEmailHidden");
if (hiddenBtn.fireEvent) {
hiddenBtn.fireEvent('onclick');
hiddenBtn[eType]();
}
else {
// dispatch for firefox + others
var evObj = document.createEvent('MouseEvent');
evObj.initEvent(eType, true, true);
var hiddenBtn2 = document.getElementById("btnEmailHidden2");
hiddenBtn2.dispatchEvent(evObj);
}
我已经搜索并尝试了许多建议,但最终这是有效的。如果我有更多时间,我会喜欢调查为什么在Firefox中使用submit可以工作,在IE中使用button可以工作,但现在这将是一种奢侈,所以进入下一个问题。