我有一些代码可以在 IE 中正常工作,但不幸的是在 Google Chrome/Firefox 中不行。
它依赖于从 javascript 调用按钮上的 click() 事件。仔细阅读似乎这是一个 IE 特定的扩展 (doh)。有什么办法可以在 chrome + firefox 中做类似的事情吗?澄清一下,它是在特定按钮上执行点击事件,而不是处理用户点击按钮时发生的事情。
谢谢
请求者代码:
function getLinkButton(actionsDiv)
{
var hrefs = actionsDiv.getElementsByTagName("a");
for (var i=0; i<hrefs.length; i++)
{
var id = hrefs[i].id;
if (id !=null && id.endsWith("ShowSimilarLinkButton"))
{
return hrefs[i];
}
}
return null;
}
function doStuff()
{
//find the specific actions div... not important code...
var actionsDiv = getActionsDiv();
var linkButton = getLinkButton(actionsDiv);
if (linkButton != null)
{
if (linkButton.click)
{
linkButton.click();
}
else
{
alert("Cannot click");
}
}
}
除非绝对必要,否则我真的不想使用 jQuery
最佳答案
我认为您正在寻找 element.dispatchEvent
:
function simulateClick() {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
var cb = document.getElementById("checkbox");
var canceled = !cb.dispatchEvent(evt);
if(canceled) {
// A handler called preventDefault
alert("canceled");
} else {
// None of the handlers called preventDefault
alert("not canceled");
}
}
我将您的问题解读为“我正在尝试为我的按钮触发 onclick 事件”,而其他人似乎都将其解读为“我正在尝试为我的按钮处理 onclick 事件”。如果我弄错了,请告诉我。
修改您的代码,正确的 x 浏览器实现可能是:
if (linkButton != null)
{
if (linkButton.fireEvent)
linkButton.fireEvent("onclick");
else
{
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
linkButton.dispatchEvent(evt);
}
}
关于Javascript 点击函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2469334/