当前位置:首页 > 技术分享 > 正文内容

uniapp打开外链并在webview跳转到app内部页面

admin3年前 (2022-09-09)技术分享10301

可是打开后又无法返回,想了一下之后,新建了一个页面,在页面中插入web-view,要在


<template>

    <view>

        <web-view :src="url"></web-view>

    </view>

</template>

 

<script>

    export default {

        data() {

            return {

                url: ''

            }

        },

        onLoad(e) {

             // 获取传递过来的链接

            this.url = e.url

        }

    }

</script>


pages.json里面配置这个新页面


{

"path": "pages/index/webview",

"style": {

"navigationBarTitleText": "",

"navigationBarBackgroundColor": "#FFFFFF",

"navigationBarTextStyle": "black",

"navigationStyle": "custom"

}

}

点击跳转新页面,把url通过地址栏传参过去。


navToLink(){

uni.navigateTo({

url: `/pages/index/webview?url=${this.url}`

})

}

然后就完美的打开了,并且可以无缝隙返回。


uniapp中webview跳转到app内部页面

官方文档:

https://ask.dcloud.net.cn/article/35083


第一步:在webview加载的页面引入Js

<!-- uni 的 SDK,必须引用。 -->
<script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>

还有一个微信小程序的,如果不考虑微信小程序,则无需引入微信的 JS-SDK。


第二步:注意调用时机
在引用依赖的文件后,需要在 HTML 中监听 UniAppJSBridgeReady 事件触发后,才能安全调用 uni 的 API。

document.addEventListener('UniAppJSBridgeReady', function() {  
    uni.getEnv(function(res) {  
        console.log('当前环境:' + JSON.stringify(res));  
    });  
});

第三步:实际调用

支持调用所有的 uni 路由方法,可以实现从 HTML 重新跳转回应用内的页面。

在 UniAppJSBridgeReady 后,调用路由方法跳转到应用内的页面。

官方例子:

document.addEventListener('UniAppJSBridgeReady', function() {  
    document.querySelector('.btn-list').addEventListener('click', function(evt) {  
        var target = evt.target;  
        if (target.tagName === 'BUTTON') {  
            var action = target.getAttribute('data-action');  
            if(action === 'navigateTo') {  
                uni.navigateTo({  
                    url: '/pages/component/button/button'  
                });  
            }  
        }  
    });  
});

自己使用,需要传参:

//uniappwebview跳转到app内部页面
document.addEventListener('UniAppJSBridgeReady', function () {
    document.querySelector('.jump-uniapp').addEventListener('click', function (evt) {
        var target = evt.target;
        var articleId = target.getAttribute('articleId');
        var userName = target.getAttribute('userName');
        //if (target.tagName === 'BUTTON') {
            //var action = target.getAttribute('data-action');
            //if (action === 'navigateTo') {
                uni.navigateTo({
                    url: '/pages/details/articleDetailWebView?id=' + articleId + "&userName=" + userName
                });
            //}
        //}
    });
});

参数就用自定义属于绑定好即可,然后使用target.getAttribute('xx')这种方式获取即可。一次成功!

最精简的写法

<script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
<script>
document.addEventListener('UniAppJSBridgeReady', function() { 
    document.querySelector('.btn-list').addEventListener('click', function(evt) {
        uni.navigateTo({
            url: '/pages/index/index'
        });  
    });  
});
</script>
<button class="btn-list">查看详情</button>


扫描二维码推送至手机访问。

版权声明:本文由小刚刚技术博客发布,如需转载请注明出处。

本文链接:https://blog.bitefu.net/post/415.html

分享给朋友:

相关文章

VirtualXposed 不支持32位应用 32位无法安装问题解决办法

VirtualXposed 不支持32位应用 32位无法安装问题解决办法

VirtualXposed 是基于VirtualApp 和 epic 在非ROOT环境下运行Xposed模块的实现(支持5.0~10.0)。与 Xposed 相比,目前 VirtualXposed 有...

【不忘初心】19041/19042/19043(20H1,20H2,21H1)告别繁琐 一键替换太阳谷图标 一键恢复原版图标 一键恢复文件夹预览

【不忘初心】19041/19042/19043(20H1,20H2,21H1)告别繁琐 一键替换太阳谷图标 一键恢复原版图标 一键恢复文件夹预览

一键替换太阳谷图标,一键恢复原版图标,注意是一键!!!  太阳谷图标确实很好看,很新颖 !论坛也有相关替换教程,有的需要改权限,有的需要PE下替换,有的还得重启,搞不好很容易翻车,有些小白同学只能望梅止渴,今天以上统统告...

python3 selenium webdriver.Chrome php 爬取汽车之家所有车型详情数据[开源版]

介绍本接口是车型库api的补充,用于爬取汽车之家所有车型详情数据开源地址:https://gitee.com/web/CarApi/tree/master/python软件架构python3 selenium webdriver.Chrom...

阿里云盘 分享脚本 抢先实现文件分享功能

Win端基本所有浏览器均可进行安装安装地址:https://bbs.tampermonkey.net.cn/thread-427-1-1.html如何安装:Tampermoneky安装:谷歌浏览器参考:https://bbs.tamperm...

[教程福利] Python 全网比较全面的资源

阿里 Python 应该算比较全面了,编辑完了差不多用了三个小时左右,如果对你有帮助,给个免费的热心吗,在这里谢谢了各位大佬。092-****实战课-畅销3年的Python分布式爬虫课程-原版提取https://www.aliyundriv...

Linux/centos inode 占用100%的解决办法

当你的 Linux 系统无法创建新文件时,有可能是你的磁盘满了,还有可能是你的磁盘的 inode 用光了,我们今天要说的就是后一种情况,要解决这个问题,只能是删除一些文件,但是一般情况下,其实是你的系统中的某个地方产生了大量的你并不需要的文...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。