vue-router动态设置页⾯title
由于⽤Vue框架开发的应⽤是SPA(单页⾯应⽤),采⽤的是路由的形式,没有所谓的页⾯,所以想让⽹页的标题随着路由的改变⽽改变,可以使⽤document.title = ×××来改变⽹页标题。
但是在IOS APP⾥这种⽅式不起作⽤,原因是在IOS webview中⽹页标题只加载⼀次,动态改变是⽆效的。
解决⽅案是在路由切换完成之后,静默加载⼀个空的iframe动态设置title
util.js中定义setMetaTitle()函数
function setMetaTitle(title) {
document.title = title
let mobile = LowerCase()
if (/iphone|ipad|ipod/.test(mobile)) {
let iframe = ateElement('iframe')
iframe.style.display = 'none'
// 替换成站标favicon路径或者任意存在的较⼩的图⽚即可
iframe.setAttribute('src', 'static/img/blank.png')
let iframeCallback = function () {
setTimeout(function () {
veChild(iframe)
}, 0)
}
iframe.addEventListener('load', iframeCallback)
document.body.appendChild(iframe)
}
}
export {
setMetaTitle
}
应⽤⼊⼝main.js中调⽤setMetaTitle()函数
import Vue from 'vue'
import VueRouter from 'vue-router'
import VueResource from 'vue-resource'
import routes from './router/router.js'
import filter from './utils/filter.js'
网页app
import { setMetaTitle } from './utils/util.js'
import App from './App.vue'
Vue.use(VueRouter)
Vue.use(VueResource)
Vue.directive('title', {
inserted: function (el, binding) {
setMetaTitle(binding.value)
}
})
Object.keys(filter).forEach(function(k) {
Vue.filter(k, filter[k]);
});
const router = new VueRouter({
routes: routes
})
new Vue({
router: router,
render: h => h(App)
}).$mount('#app')
vue⽂件调⽤
<h2 v-title="'页⾯标题'">通过指令设置页⾯标题</h2>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。