NativeScript WebView 在默认浏览器中打开 url [英] NativeScript WebView open url in default browser

查看:80
本文介绍了NativeScript WebView 在默认浏览器中打开 url的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 WebView 构建应用程序,并在 WebView 内的 URL-s 上单击/点击事件.下面的解决方案打开外部浏览器和 URL,但它也在 webview 中加载相同的 url 内容.有没有办法防止在 webview 中加载新的 url?

I am trying to build app with WebView and click/tap events on URL-s inside WebView. Solution below opens external browser and URL but it loads same url content in webview as well. Is there a way to prevent loading new url inside webview?

这是我的代码示例.

function onWebViewLoaded(webargs) {
const page = webargs.object.page;
const vm = page.bindingContext;
const webview = webargs.object;


webview.on(webViewModule.WebView.loadFinishedEvent, (args) => {
   let message = "Loading in progress....";
   if (!args.error) {
    message = `WebView loading finished with url: ${args.url}`;
} else {
    message = `Error received ${args.url} : ${args.error}`;
}


   if (args.url.indexOf('http://') === 0) {
    // Stop the loading url first... but how..

    // Open URL in external default browser
    utilityModule.openUrl(args.url);
}
});
}

我已尝试将标志 isUserInteractionEnabled="false" 添加到我的 xml 视图中,但随后所有交互都被禁用.有人知道怎么做吗?

I have tried with setting a flag isUserInteractionEnabled="false" added to my xml view but then all interactions are disabled. Does someone knows how to do this?

推荐答案

Try with loadStartedEvent

    webview.on(webViewModule.WebView.loadStartedEvent, (args) => {
        if(!args.url.includes("whatever.net")){
            webview.stopLoading();
            utilsModule.openUrl(args.url);
        }
    });

通过这种方式,我们捕获 loadStartedEvent 而不是 loadFinishedEvent(其中 url 已经加载),如果我们想根据它进行过滤,我们会检查 url,然后在这里我们可以 webview.stopLoading() 停止页面加载.

This way we catch the loadStartedEvent instead of loadFinishedEvent (where the url is already loaded), we check the url if we want to filter depending on it, and here we can webview.stopLoading() for stop the page load.

这篇关于NativeScript WebView 在默认浏览器中打开 url的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆