Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当两个浏览器完全独立时,将window.open对象从一个浏览器传递到另一个浏览器_Javascript - Fatal编程技术网

Javascript 当两个浏览器完全独立时,将window.open对象从一个浏览器传递到另一个浏览器

Javascript 当两个浏览器完全独立时,将window.open对象从一个浏览器传递到另一个浏览器,javascript,Javascript,我有一个要求,在其中,我通过一个窗口打开两个浏览器窗口。假设a打开B和C。然后在其中一个子窗口(假设B)中,我打开另一个窗口(假设D)。现在,在这个新窗口(D)中,我想访问C的对象,以检查该窗口是打开的还是关闭的 我可以用javascript实现吗 我知道您可以通过use window.open和window.opener,但这仅适用于浏览器窗口具有父子关系的情况。但就我而言,这并没有发生 任何帮助都是值得的。是的,你可以。假设您的页面A打开windows B和C,如下所示: var b = w

我有一个要求,在其中,我通过一个窗口打开两个浏览器窗口。假设a打开B和C。然后在其中一个子窗口(假设B)中,我打开另一个窗口(假设D)。现在,在这个新窗口(D)中,我想访问C的对象,以检查该窗口是打开的还是关闭的

我可以用javascript实现吗

我知道您可以通过use window.open和window.opener,但这仅适用于浏览器窗口具有父子关系的情况。但就我而言,这并没有发生


任何帮助都是值得的。

是的,你可以。假设您的页面A打开windows B和C,如下所示:

var b = window.open("childB.html", "_blank");
var c = window.open("childC.html", "_blank");
然后您的窗口
b
即页面
childB.html
打开windowd
d

var d =  window.open("childD.html", "_blank")
childD.html
的javascript代码中,您可以放置代码:

var propC = opener.opener.c.propertyOfC;
opener.opener
将引用原始窗口A,该窗口可以引用
.c
及其所有对象


您必须添加对窗口/属性存在性的检查(最有可能是try/catch)

是的,您可以。假设您的页面A打开windows B和C,如下所示:

var b = window.open("childB.html", "_blank");
var c = window.open("childC.html", "_blank");
然后您的窗口
b
即页面
childB.html
打开windowd
d

var d =  window.open("childD.html", "_blank")
childD.html
的javascript代码中,您可以放置代码:

var propC = opener.opener.c.propertyOfC;
opener.opener
将引用原始窗口A,该窗口可以引用
.c
及其所有对象


您必须添加对窗口/属性存在性的检查(最有可能的是try/catch)

这里有一个使用纯javascript(也称为无库)的有效解决方案

将此脚本复制到一个新的空白文件中,并将其命名为window_manager.js

    var windows = {};
    function openWindow(url, name, features) {
        windows[name] = window.open(url, name, features);
       return windows[name];
    }  

    function closeWindow(name) {
        var window = windows[name];
       if(window) {
         window.close();
        delete windows[name];
       }
    }
函数已打开(windowName,checkparents){

使用

  • 在每页的标题部分包括window_manager.js脚本
  • 为每个窗口指定一个唯一的名称:window.name='someUniqueName'
  • 使用openWindow('theWindowname','someURL','windowFeatures')函数打开任何子窗口
  • 使用is_window_open('windowNameToCheckFor',true)函数查看特定窗口是否打开
  • 此函数将递归遍历父链,查找指定窗口名的存在性。在每个级别(甚至它本身),它将遍历所有子级和子级的子级,等等。查找指定的窗口名。最终结果是,您将得到true(如果命名窗口打开)或false(窗口已关闭或不存在)

    我无法复制用于演示/测试的测试HTML文件的HTML代码,因此我将它们放在以下粘贴箱中:


    使用pastebin中给出的代码创建所有4个html文件:a.htm、b.htm、c.htm和d.htm。浏览到a.htm将打开windows b&c。窗口b将打开窗口d。窗口d将检查窗口c并返回True。关闭窗口c并刷新窗口d。现在将返回false,因为c不再打开n使用纯javascript(也称为无库)

    将此脚本复制到一个新的空白文件中,并将其命名为window_manager.js

        var windows = {};
        function openWindow(url, name, features) {
            windows[name] = window.open(url, name, features);
           return windows[name];
        }  
    
        function closeWindow(name) {
            var window = windows[name];
           if(window) {
             window.close();
            delete windows[name];
           }
        }
    
    函数已打开(windowName,checkparents){

    使用

  • 在每页的标题部分包括window_manager.js脚本
  • 为每个窗口指定一个唯一的名称:window.name='someUniqueName'
  • 使用openWindow('theWindowname','someURL','windowFeatures')函数打开任何子窗口
  • 使用is_window_open('windowNameToCheckFor',true)函数查看特定窗口是否打开
  • 此函数将递归遍历父链,查找指定窗口名的存在性。在每个级别(甚至它本身),它将遍历所有子级和子级的子级,等等。查找指定的窗口名。最终结果是,您将得到true(如果命名窗口打开)或false(窗口已关闭或不存在)

    我无法复制用于演示/测试的测试HTML文件的HTML代码,因此我将它们放在以下粘贴箱中:


    使用pastebin中给出的代码创建所有4个html文件:a.htm、b.htm、c.htm和d.htm。浏览到a.htm,它将打开windows b&c。窗口b将打开窗口d。窗口d将检查窗口c并返回True。关闭窗口c并刷新窗口d。现在将返回false,因为c不再打开

    我认为使用jquery和jstorage将是一个更简单的解决方案。只要让每个窗口在打开时将自身添加到jstorage对象中,并在关闭时将自身从jstorage对象中移除即可。然后从任何窗口检查您感兴趣的窗口是否在对象中有属性键。感谢各位的帮助……这对我很有用。:)我认为使用jquery和jstorage将是一个更简单的解决方案。只要让每个窗口在打开时将自身添加到jstorage对象中,并在关闭后将自身从jstorage对象中移除。然后从任何窗口检查您感兴趣的窗口是否在对象中有属性键。感谢大家的帮助……这对我很有用。:)