2

这个问题之前已经问过关于模拟DOM 中已经存在的锚点上的点击事件。我的问题是如何模拟分离节点上的点击事件。

到目前为止,这适用于除 IE9 及以下版本之外的所有浏览器。这是一个重现问题的独立 HTML 文件(我正在使用 IE8 进行测试):

<!DOCTYPE html>
<html>
    <head>
        <title></title>
    </head>
    <body>
        <script>
            function goToBlankPage() {
                // Create link in memory
                var a = window.document.createElement("a");
                a.target = '_blank';
                a.href = "http://google.com/";

                // Dispatch fake click
                if (window.document.createEvent) {
                    var e = window.document.createEvent("MouseEvents");
                    e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                    a.dispatchEvent(e);
                } else if (window.document.createEventObject) {
                    try {
                        var parentEl = document.createElement("div");
                        parentEl.appendChild(a);

                        var clickEvent = document.createEventObject();            
                        clickEvent.button = 1; // left mouse button
                        a.fireEvent('onclick', clickEvent);

                    } catch(ex) {
                        alert(ex);
                    }
                }
            }
        </script>

        <a href="javascript:goToBlankPage()">Blank Page</a>

    </body>
</html>

我必须指定父母,否则我会收到错误:警报中的未指定错误。

有任何想法吗?

4

0 回答 0