Javascript 点击函数

标签 javascript internet-explorer firefox click google-chrome

我有一些代码可以在 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/

相关文章:

firefox - NS_ERROR_XPC_NOT_ENOUGH_ARGS : Not enough arguments [nsIWebBrowserPersist. saveURI],第 5 行(错误代码:-1001),带有 imacros

javascript - 当溢出为 "hidden"时停止 Firefox 重置水平滚动位置?

javascript - ScrollTop 适用于 Chrome 和 Edge,但不适用于 Firefox

javascript - 当文件完成上传到服务器时,Javascript 可以关闭窗口吗?

javascript - Selenium IDE - 无法复制电子邮件

javascript - .load() 函数在 IE10/9 中不起作用

javascript - Javascript 在 IE8 中关闭窗口

php - 我的代码有什么错误?

javascript - 为什么这个幻灯片代码不起作用?

javascript - 打开新窗口时可以删除父窗口吗?