Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法在不聚焦窗口的情况下模拟点击事件?_Javascript_Google Chrome_Focus_Mouseevent - Fatal编程技术网

Javascript 有没有办法在不聚焦窗口的情况下模拟点击事件?

Javascript 有没有办法在不聚焦窗口的情况下模拟点击事件?,javascript,google-chrome,focus,mouseevent,Javascript,Google Chrome,Focus,Mouseevent,我正在尝试编写一个函数,在谷歌浏览器中,它可以在后台打开选项卡(不会失去当前窗口的焦点),但也可以继续这样做,在URL数组中循环,如果主浏览器窗口被最小化或没有焦点,也不会聚焦主浏览器窗口 这是我正在编写的Chrome扩展的一部分,所以我只关心与Google Chrome的兼容性 为了确保选项卡在后台打开,我使用了以下函数,我没有编写这些函数,但发现它们工作得很好。据我所知,这只是模拟Ctrl+单击 function emulateClick(element){ var evt = el

我正在尝试编写一个函数,在谷歌浏览器中,它可以在后台打开选项卡(不会失去当前窗口的焦点),但也可以继续这样做,在URL数组中循环,如果主浏览器窗口被最小化或没有焦点,也不会聚焦主浏览器窗口

这是我正在编写的Chrome扩展的一部分,所以我只关心与Google Chrome的兼容性

为了确保选项卡在后台打开,我使用了以下函数,我没有编写这些函数,但发现它们工作得很好。据我所知,这只是模拟Ctrl+单击

function emulateClick(element){
    var evt = element.ownerDocument.createEvent('MouseEvents');
    evt.initMouseEvent('click', true, true, element.ownerDocument.defaultView, 1, 0, 0, 0, 0, true, false, false, true, 0, null);

    if (document.createEventObject){
        element.fireEvent('onclick', evt)
    } else{
        element.dispatchEvent(evt);
    }
}

function openTabs(x) {
$.each(x, function (index, url) {
    var $link = $('<a>', {
        "target" : "_blank",
        "href" : url
    });
emulateClick($link.get(0));
    });
}
函数模拟单击(元素){
var evt=element.ownerDocument.createEvent('MouseEvents');
evt.initMouseEvent('click',true,true,element.ownerDocument.defaultView,1,0,0,0,true,false,false,true,0,null);
if(document.createEventObject){
元素firevent('onclick',evt)
}否则{
元素。调度事件(evt);
}
}
函数openTabs(x){
$.each(x,函数(索引,url){
变量$link=$(''{
“目标”:“空白”,
“href”:url
});
仿真单击($link.get(0));
});
}

但问题是,每次触发模拟的单击事件时,即使浏览器窗口最小化,它也会弹出到前台,打断我正在做的任何事情。有什么方法可以防止这种行为吗?

这似乎很可能被用于邪恶的目的。大多数浏览器不允许这种行为,特别是为了防止无休止的弹出式广告,比如90年代末和21世纪初流行的那种广告。所以这可能是不可能的?考虑到这一点,我想很明显,不是模拟的点击让窗口聚焦,而是打开一个新标签的动作,如
。点击()
如果点击的元素只是一个按钮或什么的话,脚本不会这样做。是的,我想说这是不可能的。啊,好吧。我想我已经想出了另一个选择。我不会打开多个选项卡,而是动态插入多个iframe来执行相同的功能。谢谢你的意见。