我有一个包含四个链接的网页,每个链接打开一个弹出窗口。我使用常见的JavaScript函数打开弹出窗口,如下所示
function OpenPopup(pageURL, title,w,h) {
var left = (screen.width/2)-(w/2);
var top = (screen.height/2)-(h/2);
var targetWin = window.open (pageURL, title, 'toolbar=no, location=no,
directories=no, status=no, menubar=no, scrollbars=Yes, resizable=no,
copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
targetWin.focus();
}
当我点击链接时,它会打开一个弹出窗口,其中包含一个数据输入表单,我在该表单中输入了一些信息。然后我需要从其他弹出窗口查看其他信息,所以我回到我的主窗口,点击另一个链接,一个新的弹出窗口将打开,其中包含我需要查看的信息。我获取信息并关闭此弹出窗口,所以现在我在我的主窗口,然后再次点击该数据输入表单的链接,所以弹出窗口出现但我丢失了我输入的信息,这是因为我再次打开弹出窗口,新的弹出窗口将替换现有的同名弹出窗口。
现在我的问题是:
无论如何,我可以查看是否已从父窗口打开弹出窗口?
如果弹出窗口已经打开,我怎样才能将焦点设置到它,而不是重新加载?
如何仅通过子窗口的名称从父窗口引用子窗口,而没有子窗口的对象?
即使在刷新父窗口后,我是否可以从父窗口引用子窗口?
答案 0 :(得分:5)
对于1和2,您可以使用此功能
// loads an URL into the popup without reloading it
function popupnr(mylink, windowname, refocus) {
// open the window with blank url
var mywin = window.open('', windowname, 'window attrs here');
// if we just opened the window
if (mywin.closed || (!mywin.document.URL) || (mywin.document.URL.indexOf("about") == 0)) {
mywin.location = mylink;
}
else if (refocus) {
mywin.focus();
}
// return the window
return mywin;
}
您无法通过名称引用子窗口。没有窗户。孩子们。您需要致电window.open
以获取参考资料。
是的,你可以。但是,在调用window.open
答案 1 :(得分:0)
我认为你想要的1和2是:
if(!targetWin)
{
var targetWin = window.open (pageURL, title, 'toolbar=no, location=no,
directories=no, status=no, menubar=no, scrollbars=Yes, resizable=no,
copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
}
targetWin.focus();