uni-app中嵌套web-view
虽然uni-app能嵌套web-view但是会出现页面标题栏重叠的问题,所以打开的h5页面中会在page.json中将当前页面的导航栏标题去除。
{
"path" : "pages/clew-pool/clew-pool-index/clew-pool-index",
"style" :
{
"navigationBarTitleText": "线索池",
"enablePullDownRefresh": false,
"navigationBarBackgroundColor":"#FFFFFF",
"navigationStyle": "custom",//去除h5导航栏标题
"h5": {
"titleNView": {
"buttons": [
{
"text": "\ue6f5",
"fontSrc": "/static/fonts/iconfont.ttf",
"fontWeight": "normal",
"width": "30px",
"fontSize": "36rpx",
"float": "right"
}
]
}
}
}
},
但是自定义右边栏搜索按钮也将会去除掉,所以为了补充上去引入了web-view方法,先来看效果
这个是用web-view打开h5页面后通过web-view官方说明得到的一个搜索设置
将js方法封装在公共js库中如下:
// 右上角不显示搜索按钮
export function uniSetEmpty() {
console.log('uniSetEmpty',new Date().getTime())
uni.webView.postMessage({
data: {
action: "setRightEmpty",
},
});
}
// 右上角设置显示搜搜按钮
export function uniSetSearch() {
console.log('onTGAppCallBacktype=',new Date().getTime())
uni.webView.postMessage({
data: {
action: "setRightMenu",
},
});
}
页面引入如下:
<script>
import { uniSetEmpty, uniSetSearch } from "@/utils/tool/uni.js";//封装js库的路径
export default {
data() {
return {
}
},
//uni-app执行的生命周期
onShow() {
let _this = this;
//设置搜索按钮
uniSetSearch();
console.log("onShow-设置搜索按钮");
//点击搜索按钮的回调事件
window.onTGAppCallBack = function (res) {
_this.jumpSearchPage();
};
},
methods: {
//右侧搜索按钮点击事件
jumpSearchPage() {
console.log("jumpSearchPagejumpSearchPage");
uni.navigateTo({
url: "/pages/clew-pool/clew-pool-list/clew-pool-list"
})
}
}
}
</script>
注意:上面执行的生命周期可能会出现偶现搜索按钮出现不出来问题,但 onShow 这个生命周期里面是必须要写上的,所以可以在其它生命周期里面加上延时器解决此问题,比如:从APP第一次进入web-view可能会偶现搜索按钮不能及时出现
解决办法如下:
<script>
import { uniSetEmpty, uniSetSearch } from "@/utils/tool/uni.js";//封装js库的路径
export default {
data() {
return {
}
},
created() {
let _this = this;
setTimeout(() => {
//设置搜索按钮
uniSetSearch();
console.log("created-设置搜索按钮");
//点击搜索按钮的回调事件
window.onTGAppCallBack = function (res) {
_this.jumpSearchPage();
};
}, 500);
},
//uni-app执行的生命周期
onShow() {
let _this = this;
//设置搜索按钮
uniSetSearch();
console.log("onShow-设置搜索按钮");
//点击搜索按钮的回调事件
window.onTGAppCallBack = function (res) {
_this.jumpSearchPage();
};
},
methods: {
//右侧搜索按钮点击事件
jumpSearchPage() {
console.log("jumpSearchPagejumpSearchPage");
uni.navigateTo({
url: "/pages/clew-pool/clew-pool-list/clew-pool-list"
})
}
}
}
</script>
上面created中又加入一个安全时间 ,通过延时器 解决web-view第一次进入后搜索按钮可能会不显示问题。