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

标签 javascript angularjs popup

我是 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/

相关文章:

jquery - 在 JQuery qtip2 弹出窗口中显示 HTML 部分

javascript - 如何使用javascript在客户端通过串口进行通信?

javascript - javascript 文件中的 Angular 分割 json

javascript - 如何使用 Javascript 确认浏览器窗口已打开?

angularjs $timeout 最大值

angularjs - 单击按钮时的 Angular 滚动 div

cocoa - 在 Cocoa 中创建信息弹出窗口/工具提示

正则表达式 : exclude result if preceded by href="

javascript - Node - mysql 查询在完成原始查询之前几分钟后重复自身

javascript - 无法使用 AWS-sdk 连接到 AWS EC2