我已经制作了一些共享选项,用户点击第一张卡片上的社交分享按钮,一个窗口打开,当他们关闭窗口时,它会启动对下一张卡片的更改。
以下是我打开和跟踪窗口关闭的方式:
var shareWindow;
//Open the window on call
function openShareWin(link) {
shareWindow = window.open(link, 'rmShare', 'location=0,status=0,menubar=0,scrollbars=1,resizable=1,width=520,height=350');
}
//Initiate card flip on close
var pollTimer = window.setInterval(function() {
if (shareWindow.closed !== false) { // !== is required for compatibility with Opera
window.clearInterval(pollTimer);
flipOnClose();
}
}, 200);
function flipOnClose() {
$(document).ready(function() {
$('.share-rotate').trigger('click');
});
}
一切都很好......第一次。但是,如果用户返回共享菜单(没有刷新),打开窗口,共享站点,并关闭窗口,事件不会触发。
我知道这是因为我打电话给clearInterval
,但我必须这样做才能让setInterval
自动翻看剩余的卡片。
如何在用户关闭窗口时导致flipOnClose()
触发一次,并且在每次连续执行操作时触发?
编辑:我也收到此错误:Uncaught TypeError: Cannot read property 'closed' of undefined
。
答案 0 :(得分:0)
我不确定我是否有问题,但正如我所看到的,你可以通过将间隔创建放在打开窗口的同一个函数中来解决它。然后,每次打开窗口时,都会创建间隔。像这样:
var shareWindow;
//Open the window on call
function openShareWin(link) {
shareWindow = window.open(link, 'rmShare', 'location=0,status=0,menubar=0,scrollbars=1,resizable=1,width=520,height=350');
//Initiate card flip on close
var pollTimer = window.setInterval(function() {
if (shareWindow.closed !== false) { // !== is required for compatibility with Opera
window.clearInterval(pollTimer);
flipOnClose();
}
}, 200);
}
function flipOnClose() {
$(document).ready(function() {
$('.share-rotate').trigger('click');
});
}
如果我错了,请告诉我。