Javascript 延迟窗口。在内部打开单击事件处理程序

Javascript 延迟窗口。在内部打开单击事件处理程序,javascript,jquery,settimeout,window.open,Javascript,Jquery,Settimeout,Window.open,几天来,我一直在尝试(没有成功)延迟打开新窗口,而大部分时间都没有被Chrome阻塞。延迟对于我的任务来说是至关重要的,因为在打开窗口之前必须进行一些动画,而且我不能让浏览器阻止新选项卡的打开。以下是我的代码示例: element.on("click", function(e){ e.preventDefault(); var self = $(this), url = self[0].href; window.setTimeout(function()

几天来,我一直在尝试(没有成功)延迟打开新窗口,而大部分时间都没有被Chrome阻塞。延迟对于我的任务来说是至关重要的,因为在打开窗口之前必须进行一些动画,而且我不能让浏览器阻止新选项卡的打开。以下是我的代码示例:

element.on("click", function(e){
    e.preventDefault();
    var self = $(this),
        url = self[0].href;

    window.setTimeout(function(){
        window.open(url);
    }, 1000);
});
元素是jQuery对象(更精确地说是锚元素)。我注意到,如果我像这样直接传递字符串,我的成功率会更高

window.open("http://example.com");
我在Explorer(没问题)、Chrome(有问题)、Firefox(没问题)和Opera(有问题)中尝试过这个解决方案。我疯了,因为我已经尝试了我能记住的一切。同步ajax调用、人工触发单击、创建假锚元素和人工触发单击事件。没有什么是好的。
额外问题(以防有人知道如何解决问题):有没有办法从代码中随时调用window.open?

这在Chrome中对我有用

检查事项:

  • 显然,请仔细检查您是否在Chrome中为您的域启用了弹出窗口(它会在第一次尝试弹出新窗口时提示您)

  • 这是因为Chrome希望能够通过编程再次访问该窗口,所以希望您将对该方法的响应声明为变量。至少,我是这样让它工作的


只要您知道动画运行多长时间,然后您就可以睡眠几秒钟
通过C++绑定,将SaleEffice,MSLeEP()和USELEP()添加到NoDE.js。 这主要用于调试

这些调用将通过停止Node.js的事件循环来阻止所有JavaScript的执行

用法


你能给我们提供一个小提琴,或者我们可以复制这个问题的代码吗?调用
窗口怎么样?动画完成后打开
?我刚刚用这个小提琴检查了你的代码,问题是,弹出窗口拦截器阻止了它,可能是你必须通知用户允许你的站点出现弹出窗口。@code jaff:当然可以e尝试了这个。更糟糕的是。每次执行window.open时,我都会收到弹出窗口阻止程序。mido22:我不想解决这样的问题。在更糟糕的情况下,我会使用window.location.href,但即使这样也有它自己的缺点。它不会立即重新加载窗口,这是最大的问题。重要的!!!window不存在任何问题ot延迟打开窗口。它会立即打开,因为您忘记了阻止默认行为(打开链接)!!像我一样包括e.preventDefault:
var $element = $('#link');


$element.on('click', function () {

   var url= $(this).attr('href');

   window.setTimeout(function(){

     var windowObjRef = window.open(url);

     console.log(windowObjRef);

  }, 2000);

});
`var sleep = require('sleep');
sleep.sleep(n): sleep for n seconds
sleep.msleep(n): sleep for n miliseconds
sleep.usleep(n): sleep for n microseconds (1 second is 1000000 
microseconds)`