我是 AngularJS 的新手,我对 AngularJS 应用程序和不使用 Angular 的弹出窗口有疑问。
例如: Angular 应用程序包含一个打开弹出窗口的指令,共享 url 中的一些作用域变量作为参数。弹出窗口包含一些操作数据的 Prototype 类,并返回 AngularJS 应用程序所需的对象。我对原型(prototype) JS 的控制很少,因为该代码有些遗留。我尝试通过 jQuery 从弹出窗口中选择 Angular 应用程序中的一个元素,但这似乎不是解决此问题的正确方法。如何在非 AngularJS 弹出窗口和 AngularJS 应用程序之间“共享”数据?
最佳答案
您可以在弹出窗口的代码中使用类似以下内容从弹出窗口向“开启者”(打开弹出窗口的窗口)发布消息:
window.opener.postMessage(yourDataObject, 'https://www.yourdomain.com')
严格控制第二个参数,仅允许您的域。切勿使用“*”,因为您的数据是(或变得)敏感的,任何人都可以从他们的网站打开您的弹出窗口并获取此信息。
然后在您的 AngularJS 应用程序(开头)中添加一个监听器:
window.addEventListener("message", yourListenerFunction, useCapture)
要了解 useCapture
是 true 还是 false,请阅读 Unable to understand useCapture attribute in addEventListener并根据您想要捕捉事件的时间来了解什么对您更有利。
尤尼斯的Wishtack
关于javascript - 在 AngularJS 和非 AngularJS 弹出窗口之间共享变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28958473/