首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用java script或jQuery获取浏览器窗口对象

如何使用java script或jQuery获取浏览器窗口对象
EN

Stack Overflow用户
提问于 2011-03-22 21:29:15
回答 3查看 9.9K关注 0票数 0

我想获取已经打开的窗口的window对象,并且我不想在预期的窗口关闭时打开新的窗口。

我尝试了以下选项:

代码语言:javascript
复制
var windowObj = window.open('','windowName', '');

然而,当预期的窗口不存在/关闭时,它会打开一个新窗口。

请推荐使用JavaScript或jQuery获取窗口对象的方法。

EN

回答 3

Stack Overflow用户

发布于 2011-03-22 21:32:19

不能。在调用window.open函数时,需要保留打开窗口的引用。否则不可能获得引用。

一种解决方案是,只有在前一个窗口关闭时才创建一个新窗口,否则就会重新使用它。类似于:

代码语言:javascript
复制
var _childWin = null;

function getChildWin() {
   if (_childWin == null || _childWin.closed) {
       _childWin = window.open(...);
   }
   return _childWin;
}
票数 0
EN

Stack Overflow用户

发布于 2011-03-22 21:33:53

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

票数 0
EN

Stack Overflow用户

发布于 2011-03-22 21:48:10

有两种方法可以获得“窗口”。

代码语言:javascript
复制
var thisWindow = window; // window script resides
var newOpenWindow = window.open(parameters for window here);// window opened

对于newOpenWindow,您可以在打开它之前检查它是否存在(基本上您是否已经执行了“打开”操作),方法是查找一个false值

代码语言:javascript
复制
if (newOpenWindow) // if true it is open

对于其他窗口,您将无法从脚本的角度进行检测,因为一旦打开它们,它们就超出了窗口/浏览器实例中的脚本范围。

还有一个“包含的窗口”,它实际上是iframe中的一个文档,这完全是另一回事。

编辑:图解窗口交互

创建一个名为TestCallBack.html的子窗口

请注意两个窗口中的jQuery。

显示窗口之间的一些功能交互(从子窗口、窗口和新windows文档的jQuery对象传递):

子窗口布局:

代码语言:javascript
复制
<!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文件的文本:

代码语言:javascript
复制
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:(以及子窗口要调用的函数)

代码语言: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");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5392040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档