uni-app 打开外部链接报错
uni-app 打开外部链接报错
| 项目信息 | 详情 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC开发环境版本 | win10 |
| HBuilderX类型 | Alpha |
| HBuilderX版本 | 3.2.13 |
| 手机系统 | Android |
| 手机系统版本 | Android 12 |
| 手机厂商 | 小米 |
| 手机机型 | xiaomi11 pro |
| 页面类型 | vue |
| vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
示例代码:
<template>
<view style="height: 100%; width: 100%;">
<web-view :src="url" :webview-styles="webviewStyles"></web-view>
</view>
</template>
<script>
export default {
data() {
return {
url: '',
webviewStyles: {
progress: {
color: '#d72c22'
}
}
}
},
onLoad(e) {
this.url = JSON.parse(e.params)
uni.hideTabBar()
var currentWebview = this.$scope.$getAppWebview()
setTimeout(function() {
let wv = currentWebview.children()[0]
// wv.setStyle({top: 48})
}, 100);
}
}
</script>
操作步骤:
- 从其他页面传外部链接进来 无法打开
预期结果:
- 打开网页
实际结果:
- 报错 空白
bug描述:
- 用webview 打开外部链接 :
TypeError: this._onParentReady is not a function at view.umd.min.js:1 - 还有原有的webview属性 setStyle也不能用了
更多关于uni-app 打开外部链接报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
根据你提供的信息,这个问题主要涉及两个层面:
-
_onParentReady错误:这是 uni-app 框架在特定版本下的兼容性问题。在 HBuilderX Alpha 3.2.13 版本中,web-view组件内部可能调用了不存在的方法。这通常不是你的代码问题,而是框架底层的 Bug。 -
setStyle方法失效:在较新的 uni-app 版本中,Webview 样式设置方式有所调整。setStyle方法可能已被废弃或变更,导致无法直接操作。
解决方案:
针对问题1(打开链接报错): 最直接的解决方法是降级 HBuilderX 版本。建议退回至相对稳定的正式版(如 3.1.22 或 3.2.11 正式版),Alpha 版本可能存在未修复的缺陷。如果必须使用当前版本,可以尝试以下临时方案:
- 检查外部链接地址是否包含特殊字符或格式问题,确保
JSON.parse(e.params)解析出的字符串是完整的 URL(如https://...)。 - 尝试不在
onLoad中立即赋值,而是在onReady生命周期中设置url。
针对问题2(setStyle 失效):
新的规范建议通过 webviewStyles 属性(你已在代码中使用)来统一控制样式,而非直接操作 Webview 对象。例如,要设置 top,可以:
data() {
return {
webviewStyles: {
progress: { color: '#d72c22' },
// 直接在这里设置样式
top: '48px'
}
}
}


