webview加载的h5页面明明按照uniapp官方文档引入了uni-webview.js,但仍无法使用uni.navigateTo等方法?
若是普通html那可能是引入方式不对,若webview中加载的H5是使用uniapp开发的话,就需要修改uni.webview.js源码来解决了
修改方式:
下载uni.webview.1.5.6.js后格式化一下方便查看,在js中搜索uni然后修改这2处地方,我这里改为uniWeb,在后续使用过程中使用uniWeb来调用SDK内的方法


引入方式:
<body>
<script type="text/javascript">
var userAgent = navigator.userAgent;
if (/miniProgram/i.test(userAgent) && /micromessenger/i.test(userAgent)) {
// 微信小程序 JS-SDK 如果不需要兼容微信小程序,则无需引用此 JS 文件。
document.write('<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"><\/script>');
}
</script>
<!-- 需要把 uni.webview.1.5.6.js 下载到自己的服务器 -->
<!-- 由于本H5项目是使用uniapp开发的,uni-webview.js文件导出了uni对象,会被uniapp本身的uni对象覆盖,所以把源码中的uni变量改为uniWeb -->
<script type="text/javascript" src="./js/uni.webview.1.5.6.js"></script>
<script>
document.addEventListener('UniAppJSBridgeReady', function() {
// uni-webview.js源码修改后,使用uniWeb来调用SDK中的方法
uniWeb.getEnv(function(res) {
console.log('当前环境:' + JSON.stringify(res));
});
});
</script>
</body>
小姿势:
h5嵌入微信小程序时 wx.miniProgram 等API已经被 uni.webview 重写兼容了,所以不用写 wx.miniProgram.navigateTo,而是使用 uniWeb.navigateTo就能够跳转宿主小程序的页面