Yabcer
Yabcer
  • 发布:2020-03-03 15:17
  • 更新:2020-06-03 14:22
  • 阅读:1161

nvue下不能创建web-view,也无法获取web-view对象

分类:nvue
<template>  
    <view>  
    </view>  
</template>  
<script>  
var wv;//计划创建的webview  
export default {  
    onLoad() {  
        // #ifdef APP-PLUS  
        wv = plus.webview.create("","custom-webview",{  
            plusrequire:"none", //禁止远程网页使用plus的API,有些使用mui制作的网页可能会监听plus.key,造成关闭页面混乱,可以通过这种方式禁止  
      'uni-app': 'none', //不加载uni-app渲染层框架,避免样式冲突  
            top:uni.getSystemInfoSync().statusBarHeight+44 //放置在titleNView下方。如果还想在webview上方加个地址栏的什么的,可以继续降低TOP值  
        })  
        wv.loadURL("https://www.baidu.com")  
        var currentWebview = this.$mp.page.$getAppWebview() //获取当前页面的webview对象  
        currentWebview.append(wv);//一定要append到当前的页面里!!!才能跟随当前页面一起做动画,一起关闭  
        setTimeout(function() {  
            console.log(wv.getStyle())  
        }, 1000);//如果是首页的onload调用时需要延时一下,二级页面无需延时,可直接获取  
        // #endif  
    }  
};  
</script>

以上代码提示 this.$mp.page 不存在

2020-03-03 15:17 负责人:无 分享
已邀请:
l***@139.com

l***@139.com

参考:https://uniapp.dcloud.io/component/web-view

var currentWebview = this.$scope.$getAppWebview() //此对象相当于html5plus里的plus.webview.currentWebview()。在uni-app里vue页面直接使用plus.webview.currentWebview()无效,非v3编译模式使用this.$mp.page.$getAppWebview()

检查hbuliderex的版本,最新版本默认是V3编译模式

程咬金3斧头

程咬金3斧头

nvue本身不是webview,所以不需要获取本页面的webview对象后再append。直接用自己创建的webview调用show(),就可以了。
大致代码:

 wv = plus.webview.create("","custom-webview",{    
            plusrequire:"none", //禁止远程网页使用plus的API,有些使用mui制作的网页可能会监听plus.key,造成关闭页面混乱,可以通过这种方式禁止    
      'uni-app': 'none', //不加载uni-app渲染层框架,避免样式冲突    
            top:uni.getSystemInfoSync().statusBarHeight+44 //放置在titleNView下方。如果还想在webview上方加个地址栏的什么的,可以继续降低TOP值    
        })    
wv.loadURL("https://www.baidu.com")    
wv.show();

该问题目前已经被锁定, 无法添加新回复