我想在打开弹出窗口之前检查弹出窗口是否已打开。 如何使用Jquery完成它?
以下是我打开新弹出窗口的代码:
window.open("mystopchat.php?stat=1&session="+data['myid1']['session_id'][i],"win1","width=500,height=500");
在我调用之前,我想确保此弹出窗口尚未打开。
答案 0 :(得分:8)
这是我使用的一个小技巧,也许你可以使用它:
var winRef; //This holds the reference to your page, to see later it is open or not
function openWindow() {
var url = //Your URL;
if (typeof (winRef) == 'undefined' || winRef.closed) {
//create new, since none is open
winRef = window.open(url, "_blank");
}
else {
try {
winRef.document; //if this throws an exception then we have no access to the child window - probably domain change so we open a new window
}
catch (e) {
winRef = window.open(url, "_blank");
}
//IE doesn't allow focus, so I close it and open a new one
if (navigator.appName == 'Microsoft Internet Explorer') {
winRef.close();
winRef = window.open(url, "_blank");
}
else {
//give it focus for a better user experience
winRef.focus();
}
}
}
希望它有所帮助。
答案 1 :(得分:5)
var popup;
function openPopupOneAtATime() {
if (popup && !popup.closed) {
popup.focus();
/* or do something else, e.g. close the popup or alert a warning */
}
else {
popup = window.open(...);
}
}
答案 2 :(得分:0)
var newWindow = null;
function openwindow()
{
// open the new window only if newWindow is null (not opened yet)
// or if it was closed
if ((newWindow == null) || (newWindow.closed))
newWindow = window.open(...);
}
答案 3 :(得分:0)
试试这个(你会知道是否调用了打开的窗口):
var isOpen = "false";
function OpenPopup()
{
if(isOpen == "false")
{
isOpen = "true";
window.open("mystopchat.php?stat=1&session="+data['myid1']['session_id'] [i],"win1","width=500,height=500");
}
}
答案 4 :(得分:0)
这是我的建议:
function authorize(callback) {
if(!document.authorize) {
console.log('Opening authorization window...');
document.authorize = window.open('popup.html','tw','width=300,height=200');
}
if(document.authorize.closed) {
console.log('Authorization window was closed...');
setTimeout(callback,0);
} else {
setTimeout(function(){
console.log('Authorization window still open...');
authorize(callback);
},1000);
}
return false;
}
function test() {
authorize(function(){
alert('teste');
});
}