Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.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 如何管理(打开、关闭、调整大小)多个窗口_Javascript_Angularjs - Fatal编程技术网

Javascript 如何管理(打开、关闭、调整大小)多个窗口

Javascript 如何管理(打开、关闭、调整大小)多个窗口,javascript,angularjs,Javascript,Angularjs,我正在使用AngularJS构建一个大型应用程序。用户登陆登录页面,登录后我打开一个或两个窗口。一旦打开,基于各种条件,窗口将调整大小、关闭或生成更多子窗口。我的问题是管理这些 我的Angular应用程序只能引用其直接父窗口或生成的窗口,但不能全部引用,因为范围仅限于其窗口。我曾尝试将窗口对象存储在localStorage/cookies中,但由于JSON.stringify中存在循环引用,因此无法正常工作。在这里,我有点不知所措,不知道如何以编程的方式进行结构设计,而不用硬编码,因为这些东西不

我正在使用AngularJS构建一个大型应用程序。用户登陆登录页面,登录后我打开一个或两个窗口。一旦打开,基于各种条件,窗口将调整大小、关闭或生成更多子窗口。我的问题是管理这些

我的Angular应用程序只能引用其直接父窗口或生成的窗口,但不能全部引用,因为范围仅限于其窗口。我曾尝试将窗口对象存储在localStorage/cookies中,但由于JSON.stringify中存在循环引用,因此无法正常工作。在这里,我有点不知所措,不知道如何以编程的方式进行结构设计,而不用硬编码,因为这些东西不会长期工作

显然,我已经尝试了下面的方法,但它不起作用,因为我需要能够从任何窗口引用任何窗口。而且我似乎无法将var x存储在任何地方

var x = window.open(...)
  • 如何以编程方式在我的应用程序中存储和管理(关闭、打开、调整大小、重新定位)多个窗口
  • 如果不存在优雅的解决方案,如何存储和检索窗口对象
  • 更新

    好吧,看来我找到了解决这个问题的办法。我正在本地存储中存储一个窗口ID数组。然后,每当我需要处理一个文件时,我就在其中读取它,调用window.open(null,id.function())


    因为window.open返回对已经打开的窗口的引用,所以看起来应该可以这样做。仍然希望有更多的意见…

    不确定这个解决方案是否有用,但我就是这么做的。我创建了一个有多个div的angular应用程序,可以调整大小、关闭等等,每个div都有自己的控制器。因此,我使用$rootScope作为事件总线,并将所有事件发布到它

    因此,每个控制器都可以发布和订阅$rootScope上的事件

    控制器1

    $rootScope.$broadcast('Event', { 'key': value });
    
    控制器2

    $rootScope.$on('Event', function(e, data){//process data});
    

    您还可以创建一个服务来存储和共享窗口ID,因为这些服务是单例的。

    您的应用程序可能需要安装浏览器扩展吗?这将使这种方式更容易,老实说,如果没有这种途径,我甚至不确定浏览器安全性的工作方式是否可能做到这一点。@Jack是的,我们可以要求浏览器扩展,但希望不必这样做。只有当一个更不可知的解决方案被证明是真正不可侵犯的时候,我才会探讨这个选项。谢谢,这是一个很好的解决方案,这就是我试图设置它的方式,只是使用localStorage而不是$rootScope,这样它就可以在多个窗口中持久存在。