webview 调用系统浏览器怎么解决

发布于 2022-09-05 21:59:56 字数 3172 浏览 14 评论 0

mui的页面,也就是webview的页面中包含多个list,每次点击其中一个list时,希望是在手机的浏览器中打开,不要在webview中打开,要怎么操作呢?
mui的open方法是不能用的,location.href / windown.open 都不起作用。

如果把点击事件放在mui.plusReady(function(){}中,因为用到5+,但是在手机上测试时,点击也不跳转:

mui.plusReady(function(){
    if(plus.networkinfo.getCurrentType() == plus.networkinfo.CONNECTION_NONE){
        mui.toast("当前网络不给力,无法加载广告");
    }else{
        //屏幕真实宽度
        var width = window.innerWidth;
        var height = window.innerHeight;
        
        var adHeight = parseInt(width)*3/20;
        var adBottom = mui.os.ios?('-'+adHeight+'px'):'0';
        var ad = plus.webview.create(url,'ad',{height:adHeight+'px',bottom:adBottom,position:"absolute"});
        
        //目前Android平台不支持子webview的setStyle动画,因此分平台处理;
        if(mui.os.ios){
            //为了支持iOS平台左侧边缘滑动关闭页面,需要append进去;
            plus.webview.currentWebview().append(ad);
            ad.addEventListener('loaded',function () {
                ad.setStyle({
                    bottom:'0',
                    transition: {
                        duration: 150
                    }
                });
            });
        }else{
            ad.addEventListener('loaded',function () {
                ad.show('slide-in-bottom');
            });
        }
        //设置主页面的底部留白,否则会被遮住;
        document.querySelector('.mui-content').style.paddingBottom = adHeight + 'px';
    }
    
    //点击打开下载的文件
    jQuery('#downloadNav').find('.download-name').on('tap',function(e){
        e.stopPropagation();
        var url = jQuery(this).attr('data-url');
        var href = this.getAttribute('href');
        if (url) {
            if (window.plus) {
                plus.runtime.openURL(url);
            } else {
                location.href = url;//在网页中执行这一句,报个警告
                //警告信息:mui.min.js:7 [Intervention] Unable to preventDefault inside passive event listener due to target being treated as passive. See https://www.chromestatus.com/features/5093566007214080
            }
        }
    });
})

如果把点击事件放在mui.ready(function() {}中,在网页测试时,是可以点击到的,也会正常跳转;但在手机上测试,不跳转:

mui.ready(function() {
    //点击打开下载的文件
    jQuery('#downloadNav').find('.download-name').on('tap',function(e){
        e.stopPropagation();
        var url = jQuery(this).attr('data-url');
        var href = this.getAttribute('href');
        if (url) {
            if (window.plus) {
                plus.runtime.openURL(url);
            } else {
                location.href = url;//仍然是执行的这一句,同样也有警告
                //警告信息:download.html:297 Resource interpreted as Document but transferred with MIME type application/pdf: "http://www.beta.anviz.com/myanviz/download/storage/2017/August/week3/629845_Intellisight_User_Manual_EN-1.2.02.pdf".
                //实际情况是我需要让这个地址在手机浏览器中打开:http://www.beta.anviz.com/myanviz/download/storage/2017/August/week3/629845_Intellisight_User_Manual_EN-1.2.02.pdf
            }
        }
    });
}

这是mui的一个例子,我是根据这个例子来写的,mui广告模板,可以跳转它可以从webview跳到手机的浏览器中的,但是我却打不开,请求各位是否可以帮我指点一下,我是哪里写的不对呢?
谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

黄昏下泛黄的笔记 2022-09-12 21:59:56

plus.runtime.openURL(url)

没用过mui,只能说个大概。这句的意思感觉像是,调用了内置的api去打开app外部的浏览器。

给了思路:可以让app去打开外部的浏览器。
前端只需要跟app端定义好接口,把url传给app端,由app端负责打开外部浏览器,并显示接收到的url。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文