ホームページ  >  記事  >  ウェブフロントエンド  >  Vue でページタイトルを動的に変更する方法

Vue でページタイトルを動的に変更する方法

亚连
亚连オリジナル
2018-06-14 14:07:088036ブラウズ

この記事では主に、Vueに基づいてページタイトルを動的に変更する方法を紹介します。必要な友達はそれを参照してください

最近、VUEに基づいてSPAモバイルWebを作成し、document.title=xxxx これを修正するのは非常に面倒で、IOS の WeChat 側には影響がないと言われています。 Baidu は、IOS 上の WeChat に対していくつかの追加操作を行う必要があることを発見しました。つまり、ページ タイトルを変更できるように、非表示の Iframe を作成し、画像ファイルを任意にロードし、ロード後に削除する必要があります。インターネットにはいくつかの解決策があります。 document.title=xxxx 来修改着实蛋疼,而且在IOS的微信端据说没效果。百度发现要针对IOS的微信做点额外的操作,即:创建一个隐藏的Iframe,然后随便加载一个图片文件,然后加载完成移除,这样就能修改页面title了。网上有几种方案:

1,App.Vue里面设置title属性,然后页面title去绑定,所有子组件修改标题就通过 this.$root.data.title=xxxxx;去修改

缺点:App.Vue默认的el只是body的一个p,这样干需要绑定整个html

2,通过自定义指令实现

Vue.directive('title', {
 inserted: function (el, binding) {
 document.title = el.innerText
 el.remove()
 }
})

调用方法: e4e4f03220842766fe398e33aaff284b标题内容94b3e26ee717c64999d7867364b1b4a3

优点:这样自定义程度较大(暂且不讨论IOS微信端是否能修改成功)

缺点:无法满足某些JS方法中修改页面标题的需求,例如页面为一个websocket的页面,收到消息要动态显示页面标题这时候频繁去修改p绑定的text并不恰当

针对网上查到的上面两种方法,我进行了合并,利用vue的插件实现SPA的页面标题修改:

var plugin={};
plugin.install=function(Vue,options){
 Vue.prototype.$title=function(title){
  document.title=title;
  var iframe=document.createElement("iframe");
  iframe.style.display='none';
  iframe.setAttribute('src','/e.png');
  var loadedCallback=()=>{
   iframe.removeEventListener('load',loadedCallback);
   document.body.removeChild(iframe);
  };
  iframe.addEventListener('load',loadedCallback);
  document.body.appendChild(iframe);
 };
};
module.exports=plugin;

调用方法: this.$title('xxxxxx'); 当然你可以替换为一个绑定的变量,然后watch进行实时调整。

ps:Vue Spa切换页面时更改标题

在Vue组件化开发过程中,因为是单页面开发,但是有时候需要页面的title根据情况改变,于是上网查了一下,各种说法花(wo)里(kan)胡(bu)哨(dong), 于是想到一个黑科技 documet.title="xxx";

随便创建一个项目,在独立的模块中,created在钩子函数启动之后document.title='标题'; 但是据说在IOS的微信下是无效的,虽然用苹果机测试过有用,但是想到这样会影响我的代码洁癖。

<script>
export default {
  data(){
    return{
    }
  },
  created(){
    document.title="首页"
  },
}
</script>

于是在github上找到一个好用的东西 vue-wechat-title

通过 npm install vue-wechat-title  安装

引入需要的vue-router与页面需要的组件之后

const router = new VueRouter({
  mode: &#39;history&#39;,
  routes:[
    {
    name: &#39;index&#39;,
    path: &#39;/&#39;,
    meta: {
        title: &#39;首页&#39;
     },
     component: index
    },
   {
     name: &#39;root&#39;,
     path: &#39;/root&#39;, 
     meta: {
        title: &#39;肉特&#39;
    },
    component: root
    }  
 ]
});
Vue.use(require(&#39;vue-wechat-title&#39;)); //实例化参数

在组件中顶部添加一段 4252e4288c783d62a07270c5b83876b394b3e26ee717c64999d7867364b1b4a3

1. App.Vue で title 属性を設定し、すべてのサブコンポーネントのタイトルを変更するには、 this.$root.data.title を使用します。 =xxxxx; 変更するには

欠点: App.Vue のデフォルトの el は本文内の p だけです。これを行うには、カスタム命令

rrreee

Call を通じて実装される html

2 全体をバインドする必要があります。メソッド: e4e4f03220842766fe398e33aaff284b Title content94b3e26ee717c64999d7867364b1b4a3

利点:このカスタマイズの度合いはより大きくなります (IOS WeChat バージョンを正常に変更できるかどうかについては議論しません)

欠点: WebSocket ページなどの一部の JS メソッドでは、メッセージを受信するときにページ タイトルを動的に表示する必要があるため、このようなニーズには対応できません。 p にバインドされたテキストを変更します。インターネット上にある上記の 2 つのメソッドをマージし、SPA ページ タイトルの変更を実装します。 rrreee

呼び出しメソッド: this.$title('xxxxxx) '); もちろん、これをバインドされた変数に置き換えて、リアルタイムの調整を監視することもできます。

追記: Vue Spa はページを切り替えるとタイトルが変更されます

Vue コンポーネントの開発プロセスでは、単一ページであるため、開発中ですが、状況に応じてページのタイトルを変更する必要がある場合があるので、ネットで調べてみると、(wo)li(kan)とhu(bu)shao(dong)の説明が色々出てきたので、黒を考えました。 technology documet.title="xxx";🎜 🎜独立したモジュールで、フック関数の起動後に document.title='title' を作成しますが、IOS の WeChat では無効と言われています。 Apple マシンでテスト済みなので動作しますが、コードフリークである私には影響があると思います。 🎜rrreee🎜そこで、 npm install vue-wechat-title を通じて便利なツール vue-wechat-title🎜🎜 を見つけ、必要な vue-router とページに必要なコンポーネントを導入した後、インストールしました🎜🎜 🎜rrreee🎜コンポーネント 9ff3f908ea287cf095b9983c0efdc40094b3e26ee717c64999d7867364b1b4a3 の先頭にセクションを追加します🎜🎜 上記は私が行ったものです将来すべての人に役立つことを願っています。 🎜🎜関連記事: 🎜🎜🎜wordpressでajaxを使う方法🎜🎜🎜🎜vueで子コンポーネントにデータを渡す親コンポーネントを実装する方法🎜🎜🎜🎜モバイルフィンガースライディングカルーセルチャートをjsで実装する方法🎜🎜

以上がVue でページタイトルを動的に変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。