有些日子我现在一直在尝试(没有成功)打开新窗口,但是大部分时间没有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");
我在资源管理器(没问题),Chrome(问题),Firefox(没问题)和Opera(问题)中尝试过此解决方案。我正在失去理智,因为我已经尝试过我能记住的一切。同步ajax调用,人为触发click,创建假锚元素并人为触发click事件。什么都行不通。 奖金问题(如果有人知道如何解决问题):有没有办法随时调用window.open&来自代码的任何地方?
答案 0 :(得分:0)
这适用于Chrome http://jsbin.com/wuqopukayuwi/4/
var $element = $('#link');
$element.on('click', function () {
var url= $(this).attr('href');
window.setTimeout(function(){
var windowObjRef = window.open(url);
console.log(windowObjRef);
}, 2000);
});
要检查的事项:
显然,请仔细检查您是否在Chrome中为您的域启用了弹出窗口(它会在您第一次尝试弹出新窗口时提示您
这是因为Chrome希望能够以编程方式再次访问该窗口,因此您希望将该方法的响应声明为变量。至少,这就是我如何运作......
答案 1 :(得分:0)
只要您知道动画运行多长时间,您就会睡眠数秒 通过C ++绑定将sleep(),msleep()和usleep()添加到Node.js。
这主要用于调试。
这些调用将通过暂停Node.js来阻止所有JavaScript的执行。事件循环!
用法
`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)`