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

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跳到手机的浏览器中的,但是我却打不开,请求各位是否可以帮我指点一下,我是哪里写的不对呢?
谢谢!

阅读 7.1k
1 个回答

plus.runtime.openURL(url)

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题