几天来,我一直在努力(没有成功)在没有Chrome屏蔽的情况下延迟打开新窗口。延迟对我的任务至关重要,因为某些动画必须在打开窗口之前进行,而且我无法承受浏览器阻止打开新选项卡。这里是我的代码示例:拖延window.open里面的点击事件处理程序
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");
我试过在资源管理器(没问题),铬(问题),火狐(没问题)和Opera这个解决方案(问题)。我放弃了我的想法,因为我试过了我能记得的一切。同步ajax调用,人为触发点击,创建假锚点元素和人为触发点击事件。没什么工作正常。 奖金问题(以防有人知道如何解决问题):有没有办法在任何地方随时调用window.open &?
你能为我们提供一个小提琴,或代码,使我们能够重现问题?一旦动画完成它的执行,怎么样调用'window.open'? – 2014-10-06 11:43:42
我刚刚检查了这个小提琴的代码,http://jsfiddle.net/xeoctj2p/1/,我得到的问题是,弹出式窗口拦截器阻止它,可能是你必须通知用户允许弹出窗口为您的网站。 – mido 2014-10-06 11:47:54
@ code-jaff:当然我已经试过了。它更糟。每次执行window.open并在每个浏览器上都会弹出阻止程序。 mido22:我不想解决那样的问题。在更糟的情况下,我会使用window.location.href,但即使这样也有其缺点。它不会立即重新加载窗口,这是最大的问题。 – AlFra 2014-10-06 12:39:32