在 AngularJS 和非 AngularJS 弹出窗口之间共享变量

Sharing a variable between AngularJS and a non-AngularJS popup window

本文关键字:AngularJS 之间 共享变量 窗口 和非      更新时间:2023-09-26
有点像AngularJS

的新手,我对AngularJS应用程序以及不使用Angular的弹出窗口有疑问。

例如:Angular 应用程序包含一个指令,该指令打开一个弹出窗口,将 url 中的一些作用域变量作为参数共享。 弹出窗口包含一些操作数据的原型类,并返回 AngularJS 应用程序需要的对象。 我对原型JS的控制很少,因为该代码有些遗留。 我尝试通过jQuery从弹出窗口中选择Angular应用程序中的元素,但是这似乎不是解决此问题的正确方法。 如何在非AngularJS弹出窗口和AngularJS应用程序之间"共享"数据?

您可以使用弹出窗口代码中的以下内容从弹出窗口向"打开器"(打开弹出窗口的窗口)发布消息:

window.opener.postMessage(yourDataObject, 'https://www.yourdomain.com')

严格使用第二个参数,只允许你的域。切勿使用"*",就好像您的数据是(或变得)敏感的,任何人都可以从他们的网站打开您的弹出窗口并获取此信息。

然后在您的 AngularJS 应用程序(开场白)中,添加一个侦听器:

window.addEventListener("message", yourListenerFunction, useCapture)

要了解useCapture应该是真还是假,请阅读 addEventListener 中的无法理解 useCapture 属性,并根据您想要捕获事件的时间查看什么更适合您。

尤尼斯为维斯塔克