什么控制 PhoneGap 是不是打开外部浏览器/Safari?

Posted

技术标签:

【中文标题】什么控制 PhoneGap 是不是打开外部浏览器/Safari?【英文标题】:What controls whether PhoneGap opens an external browser / Safari?什么控制 PhoneGap 是否打开外部浏览器/Safari? 【发布时间】:2011-11-17 17:58:31 【问题描述】:

PhoneGap 有时会在 Safari 中打开网页,有时会在其 UIWebView 中打开,这是什么控制的?

【问题讨论】:

【参考方案1】:

来自Does phoneGap support normal web?:

https://github.com/callback/callback-ios/blob/master/PhoneGapLib/Classes/PhoneGapDelegate.m#L669 透露:

    如果 URL 有方案 gap:// 则不会打开 Safari 如果 URL 有方案 file:// 则不会打开 Safari 如果设置了 OpenAllWhitelistURLsInWebView 策略,它不会打开 Safari。 如果 navigationType == UIWebViewNavigationTypeOther && mainDocument != nil 则确实会打开 Safari。

详述4:

~NavTypeOther 表示导航不是来自:链接单击、后退/前进按钮、重新加载或表单重新/提交。 (又名window.location.href assignment,或window.open(...)mainDocument != nil 表示链接不是来自 iFrame?和/或没有目标?

所以基本上,我认为只有在 UIWebView 中打开链接点击(除非它们是 gap:// 或 file:// 链接,或者设置了该策略。)

【讨论】:

以上是关于什么控制 PhoneGap 是不是打开外部浏览器/Safari?的主要内容,如果未能解决你的问题,请参考以下文章

使用 PhoneGap 在 JQuery Mobile 的外部浏览器中无法打开链接

Phonegap / Cordova ios外部链接iframe无法在safari中打开

如何从 PhoneGap 3.1 应用程序打开外部链接到 Safari/Chrome 浏览器?

Phonegap ChildBrowser 通过自定义 iOS url 打开外部 URL

PhoneGap 2.5.0,如何打开 iPad/iPhone 的外部 URL?

PhoneGap/Cordova 打开外部链接到 Safari 而不是全屏 inApp