什么控制 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