有些日子,我一直在尝试(没有成功)打开新窗口,延迟时间没有Chrome阻止它。延迟对我的任务至关重要,因为某些动画必须在打开窗口之前进行,我无法让浏览器阻止打开新标签。以下是我的代码中的示例:
element.on("click", function(e){
e.preventDefault();
var self = $(this),
url = self[0].href;
window.setTimeout(function(){
window.open(url);
}, 1000);
});
element是jQuery对象(锚元素要更精确)。我注意到如果我像这样直接传递字符串,我的成功率会更高
window.open("http://example.com");
我在资源管理器(没问题),Chrome(问题),Firefox(没问题)和Opera(问题)中尝试过这个解决方案。我失去了理智,因为我已经尝试了所有我能记住的东西。同步ajax调用,人为触发click,创建假锚元素并人为触发click事件。什么都行不通。奖金问题(如果有人知道如何解决问题):有没有办法随时随地通过代码调用window.open?
这对我在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);
});
要检查的事项:
只要你知道动画运行了多长时间,你就会睡几秒钟 通过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)`