如何使用JavaScript或jQuery获取浏览器窗口对象

rkttyhzu  于 2022-12-28  发布在  Java
关注(0)|答案(3)|浏览(255)

我想获取已经打开的窗口的窗口对象,而不想在预期窗口关闭时打开新窗口。
我尝试了以下选项:

var windowObj = window.open('','windowName', '');

但是,当预期窗口不存在/关闭时,它会打开一个新窗口。
请建议我使用JavaScript或jQuery获取窗口对象。

gcuhipw9

gcuhipw91#

不能,调用window.open函数时需要保留打开窗口的引用,否则无法获取引用。
一个解决方案是只在前一个窗口关闭时创建一个新窗口,或者在其他情况下重新使用它。

var _childWin = null;

function getChildWin() {
   if (_childWin == null || _childWin.closed) {
       _childWin = window.open(...);
   }
   return _childWin;
}
cpjpxq1n

cpjpxq1n2#

var windowObj = window;怎么样?你甚至不需要把它赋给你自己的变量。

9o685dep

9o685dep3#

获取“窗口”的方式真的有两种

var thisWindow = window; // window script resides
var newOpenWindow = window.open(parameters for window here);// window opened

对于newOpenWindow,您可以在打开它之前通过查找false值来检查它是否存在(您基本上已经执行了“open”操作了吗

if (newOpenWindow) // if true it is open

其他窗口,您将无法从脚本的Angular 进行检测,因为一旦打开,它们就超出了窗口/浏览器示例中脚本的范围。
还有“包含窗口”,它实际上是iframe中的一个文档,这实际上是完全不同的事情。
编辑:说明窗口交互
创建名为TestCallBack.html的子窗口
注意两个窗口中的jQuery。
显示窗口之间的一些功能交互(从子窗口传递,窗口和新窗口文档的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");

相关问题