javascript - 在 iFrame 上调用 JavaScript 并触发弹出窗口 - 第 22 条军规?

标签 javascript security browser popup cross-domain

这里有一些背景:

  • 我正在页面中嵌入 iFrame
  • iFrame 和页面位于不同的域
  • 我想在主页上添加一个按钮,单击该按钮时会调用iFrame 上的 JavaScript
  • iFrame 上的 JavaScript 打开弹出(登录)对话框

这是我的问题:

======================================================
|  Method      |  pop up |  call from page to iframe |
======================================================
|  direct call |    V    |            X              |
------------------------------------------------------
|  postMessage |    X    |            V              |
------------------------------------------------------
  • 直接在 iFrame 上调用 JavaScript 会打开弹出窗口,但当 iFrame 和主页位于不同域时不起作用。
  • 使用 postMessage 触发 iFrame 上的 JavaScript 可以跨域工作,但现在弹出窗口被阻止,因为它不是对直接用户操作的响应。<

有办法解决这个问题吗?

最佳答案

我建议坚持使用 postMessage,但实现自定义登录弹出窗口。使用 window.open 不是一个好主意。

关于javascript - 在 iFrame 上调用 JavaScript 并触发弹出窗口 - 第 22 条军规?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18184721/

相关文章:

javascript - 如果变量是字符串,则包含双引号输出

javascript - 在浏览器中更改 URL 参数时进行 Angular 页面刷新

html - 关于视口(viewport)的问题

java - HTTP基本认证而不是TLS客户端认证

javascript - 使用 Forge 访问浏览器证书

php - 对数据库进行盐散列的最佳方法

css - 使用浏览器大小调整 div 的大小? (不是一个简单的问题)

Javascriptprototype.constructor没有被调用

javascript - 如何在多个文件中使用全局变量

javascript - Fullcalendar 为每一天添加自定义按钮