Firefox中的.click()方法的替代方案

时间:2010-06-15 10:08:57

标签: javascript javascript-events cross-browser click dom

我有一个href,我正在发出一个弹出窗口,我想在我的身体onload中激活它。我使用document.getElementbyId("myelement").click()在IE中工作正常,但Firefox不支持它。我知道Firefox不支持.click(),但我没有其他任何方法可以做到这一点。

您能否建议在IE和FF中使用的解决方法? 提前谢谢。

3 个答案:

答案 0 :(得分:6)

您可以像Alsciende建议的那样,或者如果您需要事件对象,您可以使用dispatchEvent来触发事件处理程序:

document.body.onload = function () {
    var element = document.getElementById("element");

    if ("click" in element)
        element.click();
    else if ("dispatchEvent" in element) {
        var evt = document.createEvent("MouseEvents");
        evt.initMouseEvent("click", true, true, window,
            0, 0, 0, 0, 0, false, false, false, false, 0, null);
        element.dispatchEvent(evt);
    }
}

使用框架(例如jQuery)来处理这些类型的浏览器不一致性有时很有用。或多或少,jQuery中的相同代码将是:

$('#element').click();

答案 1 :(得分:2)

创建一个打开弹出窗口的函数,并在body onload处理程序以及链接onclick处理程序中使用此函数。

function openPopup() {
  window.open("...");
  return false;
}

<body onload="openPopup()">
 ...
 <a id="myelement" href="#" onclick="openPopup()">...</a>
 ...
</body>

答案 2 :(得分:0)

只是为了帮助某人,我已经在很多代码中看到了这个,但不能保证它是否适用于您的情况,以下是我也尝试过的 -

'leftclick .divname':'_ functionname',

不确定。但这可能是使用了js必须提供的东西。我在骨干应用程序中使用它,该应用程序具有下划线js支持。