>  기사  >  웹 프론트엔드  >  Vue에서 페이지 제목을 동적으로 수정하는 방법

Vue에서 페이지 제목을 동적으로 수정하는 방법

亚连
亚连원래의
2018-06-14 14:07:088032검색

이 글에서는 Vue를 기반으로 페이지 제목을 동적으로 수정하는 방법을 주로 소개했는데, 필요하신 친구들은 참고하시면 됩니다

최근 VUE를 기반으로 SPA 모바일 웹을 만들어봤는데 document.title=xxxx 수정하기가 정말 힘들고, IOS의 위챗에는 아무런 영향을 미치지 않는다고 합니다. 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에서 제목 속성을 설정한 다음 모든 하위 구성 요소의 제목을 수정하려면 this.$root.data.title을 사용하세요. =xxxxx; 수정하려면

단점: App.Vue의 기본 el은 본문에 있는 p일 뿐입니다. 이를 위해서는 사용자 정의 지침

rrreee

Call을 통해 구현되는 전체 html

2을 바인딩해야 합니다. 방법: e4e4f03220842766fe398e33aaff284b 제목 콘텐츠94b3e26ee717c64999d7867364b1b4a3

장점: 이 수준의 사용자 정의가 더 큽니다(IOS WeChat 버전을 성공적으로 수정할 수 있는지 여부는 논의하지 않겠습니다)

단점: 일부 JS 메서드에서는 페이지 제목을 수정해야 하는 요구 사항을 충족할 수 없습니다. 예를 들어 페이지가 웹소켓 페이지인 경우 페이지 제목을 동적으로 표시해야 하는 경우가 자주 발생합니다. p에 바인딩된 텍스트를 수정합니다. 인터넷에서 찾은 위 두 가지 방법을 병합하고 vue 플러그인을 사용했습니다. SPA 페이지 제목 수정 구현: rrreee

호출 방법: this.$title('xxxxxx '); 물론 바인딩된 변수로 대체한 다음 실시간 조정을 관찰할 수 있습니다.

ps: Vue Spa는 페이지를 전환할 때 제목을 변경합니다

Vue 구성 요소 개발 프로세스에서는 단일 페이지이기 때문에 개발중인데 가끔 상황에 따라 페이지 제목을 바꿔야 할 때가 있어서 인터넷으로 확인해 보니 다양한 설명이 (wo)li(kan), hu(bu)shao(dong)에 있어서 검정색을 생각하게 되었어요. technology documet.title="xxx";🎜 🎜독립 모듈에서 Hook 기능이 시작된 후 document.title='title'을 생성하지만 IOS의 WeChat에서는 유효하지 않다고 합니다. Apple 컴퓨터로 테스트했지만 작동하지만 이것이 코드 괴물에게 영향을 미칠 것이라고 생각합니다. 🎜rrreee🎜그래서 npm install vue-wechat-title을 통해 유용한 도구 vue-wechat-title🎜🎜을 찾아서 설치했습니다🎜🎜필수 vue-router와 페이지에서 요구하는 구성 요소를 소개한 후 🎜rrreee🎜구성요소 9ff3f908ea287cf095b9983c0efdc40094b3e26ee717c64999d7867364b1b4a3 🎜🎜위에 섹션을 추가하세요. 모든 사람을 위해 편집되었습니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다. 🎜🎜관련 기사: 🎜🎜🎜워드프레스에서 ajax를 사용하는 방법🎜🎜🎜🎜vue에서 하위 구성 요소에 데이터를 전달하기 위해 상위 구성 요소를 구현하는 방법🎜🎜🎜🎜js에서 모바일 손가락 슬라이딩 회전식 차트를 구현하는 방법🎜🎜

위 내용은 Vue에서 페이지 제목을 동적으로 수정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.