Javascript 使用IE中的“fireEvent”和分离的锚节点触发单击事件

Javascript 使用IE中的“fireEvent”和分离的锚节点触发单击事件,javascript,events,javascript-events,Javascript,Events,Javascript Events,在模拟DOM中已有的锚上的点击事件时,以前曾提出过这个问题。我的问题是如何在分离的节点上模拟单击事件 除IE9及以下版本外,这在所有浏览器中都适用。这是一个独立的HTML文件,再现了这个问题(我正在使用IE8进行测试): 函数goToBlankPage(){ //在内存中创建链接 var a=window.document.createElement(“a”); a、 目标='u blank'; a、 href=”http://google.com/"; //发送假点击 if(window.d

在模拟DOM中已有的锚上的点击事件时,以前曾提出过这个问题。我的问题是如何在分离的节点上模拟单击事件

除IE9及以下版本外,这在所有浏览器中都适用。这是一个独立的HTML文件,再现了这个问题(我正在使用IE8进行测试):


函数goToBlankPage(){
//在内存中创建链接
var a=window.document.createElement(“a”);
a、 目标='u blank';
a、 href=”http://google.com/";
//发送假点击
if(window.document.createEvent){
var e=window.document.createEvent(“MouseEvents”);
e、 initMouseEvent(“单击”,真,真,窗口,0,0,0,0,假,假,假,假,0,空);
a、 调度事件(e);
}else if(window.document.createEventObject){
试一试{
var parentEl=document.createElement(“div”);
父母、子女(a);
var clickEvent=document.createEventObject();
clickEvent.button=1;//鼠标左键
a、 fireEvent(“onclick”,clickEvent);
}捕获(ex){
警报(ex);
}
}
}
我必须指定一位家长,否则我的警报中会出现错误:未指定的错误


有什么想法吗?

使用
元素,你可以只使用
a.click()
。出于好奇,如何单击内存中的节点?我不知道,我只需要一种方法在新选项卡中打开任意URL,而这正是适合我的特殊情况的,只是不适用于IE。@duri,如果它连接到DOM,但是它不适用于分离的锚。如果您也能找到一种方法将其附加到DOM并单击它,那么也可以。任何只在新选项卡中打开URL而不使用
窗口.showDialog
/
窗口.open
的方法都适用于我。
<!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>