【问题标题】:Communicate w/ Javascript running in an iFrame与 iFrame 中运行的/Javascript 通信
【发布时间】:2016-07-02 23:32:39
【问题描述】:

我目前正在开发一个使用 Phonegap/Cordova 框架来显示网站的在线和离线版本的应用程序。如果您不熟悉此框架,它提供了一种通过在全屏 Web 视图中显示本地文件来创建多平台应用程序的简单方法。

在启动应用程序时,集成在应用程序本地文件中的 Javascript 会检测是否可以访问 Internet,并将用户重定向到另一个本地网页,其中包含实时网站的全屏 iFrame,或减少的离线版本如果未检测到 Internet 连接,则访问网站(包含在应用程序的本地文件中)。

我想检测用户何时使用网站上的各种表单(显示在 iFrame 内)登录,但我无法知道用户在哪个页面上,或与网站内容交互都是因为同源政策。

是否可以让本地页面(包含 iFrame)的 Javascript 与远程页面(显示在 iFrame 中)的 Javascript 交互?这样,我将能够获取登录信息,并将其保存以备后用(显然不使用令牌系统),而且它还有助于另一个计划的功能(触发引导系统)。

谢谢。

【问题讨论】:

  • 你试过了吗?如果它实际上是相同的来源,则应该与标准页面没有什么不同。不确定您是否也可以调用函数,因为我从未尝试过。
  • @Adjit 是的,我试过了。这正是不同的来源,这就是为什么我无法从本地页面访问 URL 或 iFrame 的内容。谢谢你的回答。
  • 好吧,如果不是同源,我认为这是不可能的。
  • 如果你控制了iframed页面的JS,那么使用top.postMessage推送事件/数据

标签: javascript cordova iframe same-origin-policy


【解决方案1】:

看看 HTML5 通信,它非常简单,听起来很适合您的需求

http://stevehanov.ca/blog/index.php?id=109

https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

【讨论】:

  • 谢谢,我现在去看看,然后报告结果。
  • @NeatMonster 顺便说一句,h5 通信可以跨域工作
猜你喜欢
  • 2013-03-13
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多