如何在 IOS 上运行的 phonegap/cordova 应用程序中打开 iframe?
Posted
技术标签:
【中文标题】如何在 IOS 上运行的 phonegap/cordova 应用程序中打开 iframe?【英文标题】:How can I open an iframe in a phonegap/cordova app running on IOS? 【发布时间】:2013-02-19 04:56:50 【问题描述】:我有一个与 PhoneGap/Cordova 一起使用的 web 应用程序,用于在 ios 和 android 中安装。在应用程序的某一时刻,我有一个 iframe,它从第二台服务器加载内容。
当我从浏览器运行应用程序时,一切正常 - iframe 在同一页面中打开并从第二个站点加载内容。
当我使用 Cordova 在 iPhone 模拟器上运行 web 应用程序时,当 iframe 打开时,iOS 切换到 Safari 并将我的应用程序置于后台。
采取的步骤:
-
我将第二个站点添加到 Cordova.plist 文件中的“ExternalHosts”数组中。
根据 PhoneGap/Cordova 文档 (https://build.phonegap.com/docs/config-xml),我在 /www 目录中的 index.html 文件旁边创建了一个 config.xml 文件。
我在 config.xml 文件中添加了一个
我的怀疑是它没有读取/使用 config.xml 文件,但可能还有其他东西......有没有人知道我可能做错了什么?
【问题讨论】:
【参考方案1】:在添加了一个 InAppBrowser 来代替我之前使用的 iframe 之后,我最终再次尝试了 iframe,并且 iframe 现在可以正常工作,而无需像以前那样跳转到手机的浏览器,并且 iframe 在两者中都能正常工作iOS 和 Android。
从 iframe 被破坏到它们开始工作时发生了 2 件事:
-
我升级到 Cordova 2.5
我开始使用 jquery 动态地创建/添加 iframe 到页面,而不是像我最初所做的那样取消隐藏一个已经存在的 iframe:
$('').appendTo('body'); .
我没有费心检查解决 iframe 问题的是 #1 还是 #2(我猜是 #1),但我想我会发布它可以让 iframe 与 PhoneGap/ 一起使用Cordova 应用程序,以防其他人遇到同样的问题。
【讨论】:
【参考方案2】:为什么不使用 InAppBrowser? http://docs.phonegap.com/en/2.3.0/cordova_inappbrowser_inappbrowser.md.html 。使用在 Android 和 iOS 中都可以使用的 iframe 会很棘手
【讨论】:
感谢您的回复。不支持 iframe 似乎很奇怪......无论如何,InAppBrowser 似乎也有同样的问题 - 它仍然只是我的应用程序的背景并打开 Safari。看起来 Cordova 似乎只是忽略了 config.xml 文件......文档似乎表明只需将 config.xml 文件放在正确的位置会导致它自动加载,但事实似乎并非如此... 实际上,看起来 InAppBrowser 在 Cordova 2.2 中可能不可用。我会尝试升级并重新测试。 如果不想升级,可以使用PhoneGap 2.2的子浏览器插件:github.com/phonegap/phonegap-plugins/tree/master/iOS/…【参考方案3】:现在在 iOS 8 上同样的事情不工作了。我得到的 iFrame 在其他 div 上没有滚动和溢出。尝试了各种css样式,但没有解决方案。在 Android 应用上运行良好。 这是使用最新的 Phonegap 版本。
【讨论】:
以上是关于如何在 IOS 上运行的 phonegap/cordova 应用程序中打开 iframe?的主要内容,如果未能解决你的问题,请参考以下文章
Meteor Cordova App:如何在 iOS 或 Android 上运行不同的代码