vue-router動態(tài)設置頁面title的實例講解
由于用Vue框架開發(fā)的應用是SPA(單頁面應用),采用的是路由的形式,沒有所謂的頁面,所以想讓網(wǎng)頁的標題隨著路由的改變而改變,可以使用document.title = ×××來改變網(wǎng)頁標題。
但是在IOS APP里這種方式不起作用,原因是在IOS webview中網(wǎng)頁標題只加載一次,動態(tài)改變是無效的。
解決方案是在路由切換完成之后,靜默加載一個空的iframe動態(tài)設置title
util.js中定義setMetaTitle()函數(shù)
function setMetaTitle(title) {
document.title = title
let mobile = navigator.userAgent.toLowerCase()
if (/iphone|ipad|ipod/.test(mobile)) {
let iframe = document.createElement('iframe')
iframe.style.display = 'none'
// 替換成站標favicon路徑或者任意存在的較小的圖片即可
iframe.setAttribute('src', 'static/img/blank.png')
let iframeCallback = function () {
setTimeout(function () {
iframe.removeEventListener('load', iframeCallback)
document.body.removeChild(iframe)
}, 0)
}
iframe.addEventListener('load', iframeCallback)
document.body.appendChild(iframe)
}
}
export {
setMetaTitle
}
應用入口main.js中調用setMetaTitle()函數(shù)
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'
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>
以上這篇vue-router動態(tài)設置頁面title的實例講解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue.js 圖片上傳并預覽及圖片更換功能的實現(xiàn)代碼
這篇文章主要介紹了vue.js 圖片上傳并預覽及圖片更換功能,小編主要圍繞我們?nèi)粘J褂霉δ艿睦幼鲋v解,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08
Django+Vue實現(xiàn)WebSocket連接的示例代碼
這篇文章主要介紹了Django+Vue實現(xiàn)WebSocket連接的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-05-05

