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 回复

更多关于uni-app 打开外部链接报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


根据你提供的信息,这个问题主要涉及两个层面:

  1. _onParentReady 错误:这是 uni-app 框架在特定版本下的兼容性问题。在 HBuilderX Alpha 3.2.13 版本中,web-view 组件内部可能调用了不存在的方法。这通常不是你的代码问题,而是框架底层的 Bug。

  2. 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'
    }
  }
}
回到顶部