Javascript 如何管理(打开、关闭、调整大小)多个窗口
我正在使用AngularJS构建一个大型应用程序。用户登陆登录页面,登录后我打开一个或两个窗口。一旦打开,基于各种条件,窗口将调整大小、关闭或生成更多子窗口。我的问题是管理这些 我的Angular应用程序只能引用其直接父窗口或生成的窗口,但不能全部引用,因为范围仅限于其窗口。我曾尝试将窗口对象存储在localStorage/cookies中,但由于JSON.stringify中存在循环引用,因此无法正常工作。在这里,我有点不知所措,不知道如何以编程的方式进行结构设计,而不用硬编码,因为这些东西不会长期工作 显然,我已经尝试了下面的方法,但它不起作用,因为我需要能够从任何窗口引用任何窗口。而且我似乎无法将var x存储在任何地方Javascript 如何管理(打开、关闭、调整大小)多个窗口,javascript,angularjs,Javascript,Angularjs,我正在使用AngularJS构建一个大型应用程序。用户登陆登录页面,登录后我打开一个或两个窗口。一旦打开,基于各种条件,窗口将调整大小、关闭或生成更多子窗口。我的问题是管理这些 我的Angular应用程序只能引用其直接父窗口或生成的窗口,但不能全部引用,因为范围仅限于其窗口。我曾尝试将窗口对象存储在localStorage/cookies中,但由于JSON.stringify中存在循环引用,因此无法正常工作。在这里,我有点不知所措,不知道如何以编程的方式进行结构设计,而不用硬编码,因为这些东西不
var x = window.open(...)
因为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,这样它就可以在多个窗口中持久存在。