我有一段代码可以在外部窗口中启动另一个页面。
f5
我在整个应用程序生命周期中管理此窗口,论坛完成后,我的管理状态将关闭此窗口。
但是,我面临的问题是,如果用户点击window.open
进行硬刷新,则在主页加载后窗口仍然打开。
起初我以为我可以覆盖f5
来跟踪我的应用程序在全局变量中打开窗口的状态。但是,我忽略了这样一个事实:在window.open
重置时,我的全局丢失了。
这似乎是一个简单的问题,但解决方案已经避开了我。无论如何在父母刷新时关闭ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error);
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
// Started looping in allPeople... loopCount=> looping variable
ABRecordRef person = CFArrayGetValueAtIndex(allPeople, loopCount)
// Fetching the unique id to the contact
CFIndex uniqueId = ABRecordGetRecordID(person);
打开的窗口?
答案 0 :(得分:1)
var myOpenWindow = window.open(...);
window.onunload = function(){myOpenWindow.close()};
或更好
window.addEventListener('unload',function(){myOpenWindow.close()})
应该这样做。
答案 1 :(得分:0)
也许您可以使用DIV
并将其放在屏幕中央。添加一些jQueryUI魔法,你不必担心弹出窗口或阻挡器或其他东西。
答案 2 :(得分:0)
您可以使用以下代码打开窗口:
当您重新加载父页面时,孩子将在加载父页面时更改myOpenWindow
。
父窗口:
function detectChild(child) {
myOpenWindow = child;
//opener.actionWhenOpen();
}
var myOpenWindow = window.open(...);
window.onunload = function() {
if (myOpenWindow) {
myOpenWindow.refreshParent();
}
};
子窗口:
if (opener) {
//opener.actionWhenOpen();
opener.onunload = function() {
if (opener && opener.myOpenWindow) {
opener.myOpenWindow.refreshParent();
}
};
}
function refreshParent() {
this.i = ((this.i) ? this.i : 0)+1;
var i = this.i;
setTimeout(function() {
if (!opener) {
return console.log("Opener closed.");
} else if (opener.detectChild && !opener.myOpenWindow) {
this.i = 0;
opener.detectChild(window);
} else if (i < 900) {
console.log("Opener cheked("+i+").");
refreshParent(i++);
}
}, 50);
}