【问题标题】:Alternative for .click() method in FirefoxFirefox 中 .click() 方法的替代方法
【发布时间】:2011-03-03 22:04:39
【问题描述】:

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

您能否建议一种在 IE 和 Firefox 中都可以使用的解决方法?

【问题讨论】:

  • 我知道 Firefox 将不支持 .click() 一些参考会很好......

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    您可以按照 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();
    

    【讨论】:

      【解决方案3】:

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

      'leftclick .divname' : '_functionname',

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-28
        • 1970-01-01
        相关资源
        最近更新 更多