如何在 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 应用程序,用于在 iosandroid 中安装。在应用程序的某一时刻,我有一个 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?的主要内容,如果未能解决你的问题,请参考以下文章

iOS:如何在设备上运行 XCTest?

如何在 Android 和 iOS 上运行或调试颤振项目?

Meteor Cordova App:如何在 iOS 或 Android 上运行不同的代码

如何在不更改 Xcode 版本的情况下知道 iOS 5 应用程序是不是可以在 iOS 6 上运行?

如何让 iOS 应用的深层链接在 Twitter 上运行?

如何在 iOS 设备上运行React Native App