uni-app 运行到手机上打开外部网页时网页的title会跳一下
uni-app 运行到手机上打开外部网页时网页的title会跳一下
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | Windows10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:正式
HBuilderX版本号:3.2.12
手机系统:Android
手机系统版本号:Android 6.0
手机厂商:vivo
手机机型:vivo Y55A
页面类型:vue
vue版本:vue2
打包方式:云端
项目创建方式:HBuilderX
示例代码:
onLoad(options) { if (options) { let param = JSON.parse(options.param); console.log(param.type); this.url = param.url; this.title = param.type; } setTimeout(() => { uni.setNavigationBarTitle({ title:this.title }) }, 200) },
### 操作步骤:
这是代码 `<web-view :src="url"></web-view>`
这是js `onReady() { setTimeout(() => { uni.setNavigationBarTitle({ title:this.title }) }, 200) }`
pages.json:
```json
"style" :
{
"navigationBarTitleText":"",
"enablePullDownRefresh": false,
"h5":{
"titleNView":false
}
}
更多关于uni-app 运行到手机上打开外部网页时网页的title会跳一下的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app 运行到手机上打开外部网页时网页的title会跳一下的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个已知的 uni-app WebView 导航栏标题闪烁问题,主要原因是 WebView 加载网页时,网页自身的 title 会与 uni-app 设置的导航栏标题产生冲突。
问题分析:
- WebView 加载外部网页时,网页的
<title>标签内容会尝试覆盖 uni-app 的导航栏标题 - 你通过
setTimeout延迟设置标题,但网页加载完成后其 title 仍会短暂显示 - 这导致了标题从初始值 → 网页 title → 你设置的标题 这样的"跳一下"现象
解决方案:
方案1:使用 pages.json 预定义标题(推荐) 在 pages.json 中直接配置该页面的标题:
{
"path": "pages/your-page",
"style": {
"navigationBarTitleText": "你的标题",
"h5": {
"titleNView": {
"titleText": "你的标题"
}
}
}
}
方案2:在 onLoad 中立即设置标题 移除 setTimeout,在 onLoad 中直接设置:
onLoad(options) {
if (options) {
let param = JSON.parse(options.param);
this.url = param.url;
this.title = param.type;
// 立即设置标题
uni.setNavigationBarTitle({
title: this.title
});
}
}
方案3:使用 plus.webview 创建 WebView(更彻底) 对于需要更精细控制的情况,可以使用原生 WebView:
onReady() {
const wv = this.$mp.page.$getAppWebview();
const currentWebview = plus.webview.currentWebview();
// 创建新的 WebView 并隐藏原生标题栏
const newWv = plus.webview.create(this.url, '', {
titleNView: {
titleText: this.title,
autoBackButton: true
}
});
currentWebview.append(newWv);
}
方案4:隐藏 WebView 默认标题栏 在 pages.json 中彻底禁用原生导航栏,使用自定义导航栏组件:
{
"style": {
"navigationStyle": "custom",
"h5": {
"titleNView": false
}
}
}

