使用Nativescript在外部浏览器中打开某些链接

使用Nativescript在外部浏览器中打开某些链接,nativescript,Nativescript,我正在开发一个用Nativescript编写的简单应用程序 该应用程序有一个登录表单,可以根据API进行身份验证,成功后加载一个webview。所以没那么复杂 但我希望能够在手机的默认浏览器中打开某些链接,而不是在webview中打开,比如指向外部站点的链接 是否可以“捕获”所有链接单击,并且如果链接的目标属性设置为空,我们将在外部浏览器中打开该链接 我需要一个在iOS和Android上都能工作的解决方案 在Nativescript中可以这样做吗?您可以使用插件并使用shouldOverride

我正在开发一个用Nativescript编写的简单应用程序

该应用程序有一个登录表单,可以根据API进行身份验证,成功后加载一个webview。所以没那么复杂

但我希望能够在手机的默认浏览器中打开某些链接,而不是在webview中打开,比如指向外部站点的链接

是否可以“捕获”所有链接单击,并且如果链接的目标属性设置为空,我们将在外部浏览器中打开该链接

我需要一个在iOS和Android上都能工作的解决方案


在Nativescript中可以这样做吗?

您可以使用插件并使用
shouldOverrideUrlLoading
事件检查URL并根据需要取消该过程,然后使用在默认浏览器中打开给定的URL。

是的,可以在Nativescript中这样做,但不能使用默认的
WebView
组件。我正是在这种情况下,我所做的是编写一个插件,在NativeScript中自定义默认WebView,以覆盖iOS WebView&idem for Android中的默认
WKUIDelegate
。 对于iOS,
WKUIDelegate
允许检测是否有人试图使用方法
webViewCreateWebViewWithConfigurationForNavigationActionWindowFeatures
打开带有目标
的链接,因此,当使用此委托实现自定义webview时,允许根据需要在外部浏览器/应用程序中打开链接


看看这个插件:有一个想法如何定制默认WebVIEW。< /P>这可以用默认WebVIEW来完成:不确定如何在Talk=Apple空白上做它,考虑到我会考虑使用<代码> StPopAddig()/<代码>作为一个解决方案,它不是完全阻止加载请求,而是在开始加载后停止它。code>nativescript webview ext

实现了正确的本机API来处理此场景,这就是为什么我推荐插件而不是默认web视图。感谢您提供的信息。经过一些阅读和测试(我刚刚开始使用Nativescript和Typescript,之前只使用PHP和Javascript),我运行了webview。您能否详细说明如何检测链接的目标属性?另外:在我的第一个测试应用程序中,我使用nativescript webview utils为webview设置标题,这样我就可以发送从API接收到的令牌。是否可以使用ext设置标题/设置cookies/将utils与ext一起使用?基本上,我所做的是创建自己的插件,替换实现2个委托WKNavigationDelegate和wkuiDegate的NativeScript的默认WebView组件。使用WKNavigationDelegate,您可以捕获WebView中的任何请求,并使用方法
WebViewDecidePolicyFornavigationActionDecitionHandler
附加额外的头/cookie。检查此插件:。因此,我创建了自己的插件WebView,它是
nativescript WebView utils
和&
nativescript WebView ext
的组合,用于检测链接的目标属性,如果您覆盖iOS WKWebview的
WKUIDelegate
,您可以使用ConfigurationForNavigationActionWindowFeatures(webView:WKWebView,configuration:WKWebViewConfiguration,navigationAction:WKNavigationAction,windowFeatures:WKWindowFeatures)实现方法
webView创建webView
。如果有人试图在WebView中打开一个目标为
\u blank
的链接,则会调用此方法,然后可以使用包含请求URL的
navigationAction
提取链接属性,例如
navigationAction.request.URL.absoluteString
,我不确定是否理解此内容,所以请容忍我:)1)我是否只需要webview utils插件就可以实现这一点?2) 我是否使用webViewCreateWebViewWithConfigurationForNavigationActionWindowFeatures方法,而不是从webview ext进行重写?3) 此方法仅适用于iOS,是否有适用于Android的等效方法?这个项目可能超出我的能力水平,但如果我能将它付诸实施,它将为我解决一个大问题!3) 我还没有在android上测试过,但在android中,您可以使用
shouldOverrideUrlLoading
捕获webview发出的任何请求。