我想获取已经打开的窗口的window对象,并且我不想在预期的窗口关闭时打开新的窗口。
我尝试了以下选项:
var windowObj = window.open('','windowName', '');
然而,当预期的窗口不存在/关闭时,它会打开一个新窗口。
请推荐使用JavaScript或jQuery获取窗口对象的方法。
发布于 2011-03-22 21:32:19
不能。在调用window.open
函数时,需要保留打开窗口的引用。否则不可能获得引用。
一种解决方案是,只有在前一个窗口关闭时才创建一个新窗口,否则就会重新使用它。类似于:
var _childWin = null;
function getChildWin() {
if (_childWin == null || _childWin.closed) {
_childWin = window.open(...);
}
return _childWin;
}
发布于 2011-03-22 21:33:53
那就只用var windowObj = window;
怎么样?你甚至不需要把它赋给你自己的变量。
发布于 2011-03-22 21:48:10
有两种方法可以获得“窗口”。
var thisWindow = window; // window script resides
var newOpenWindow = window.open(parameters for window here);// window opened
对于newOpenWindow,您可以在打开它之前检查它是否存在(基本上您是否已经执行了“打开”操作),方法是查找一个false值
if (newOpenWindow) // if true it is open
对于其他窗口,您将无法从脚本的角度进行检测,因为一旦打开它们,它们就超出了窗口/浏览器实例中的脚本范围。
还有一个“包含的窗口”,它实际上是iframe中的一个文档,这完全是另一回事。
编辑:图解窗口交互
创建一个名为TestCallBack.html的子窗口
请注意两个窗口中的jQuery。
显示窗口之间的一些功能交互(从子窗口、窗口和新windows文档的jQuery对象传递):
子窗口布局:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>iamchild</title>
<script src="JS/jQuery/jquery.js" type="text/javascript"></script>
<script src="JS/TestCallBack.js" type="text/javascript"></script>
</head>
<body>
Howdy
<div id="achildy">HereIBe
<div id="inchildy">
I am childy text
</div>
</div>
</body>
</html>
TestCallBack.js文件的文本:
var ct;
function childCallBack(passstuff)
{
alert('ct:"' + ct + '" CHILD GOT:(' + passstuff + ")");
return ct;
};
$(document).ready(function()
{
ct = $("#achildy").text();
window.opener.logNewWindow(window, $(document));
});
父窗口中打开子窗口的Javascript:(以及子窗口要调用的函数)
function logNewWindow(newWindow, JQnewWindowDoc)
{
var mychildText = JQnewWindowDoc.text();//all the child doc text
var innerChildText = $("#inchildy", JQnewWindowDoc).text();// one element text
var gotback = newWindow.childCallBack("CHILD TEXT:" + mychildText + " INNER:" + innerChildText);
alert("GOT:" + gotback); //child sent me this text from childCallBack
};
var AWindow = window.open("TestCallBack.html");
https://stackoverflow.com/questions/5392040
复制相似问题