uni-app H5全局修改浏览器的标题,不让他自动将document.title修改为navigationBarTitleText

发布于 1周前 作者 bupafengyu 来自 Uni-App

uni-app H5全局修改浏览器的标题,不让他自动将document.title修改为navigationBarTitleText

6 回复

解决了,怎么解决的


Object.defineProperty(document, ‘title’, { get: function() { return document.title; }, set: function(value) { document.title = “”; // 不做任何操作,即不允许修改标题 } });

pages.json里面不是金鱼直接配置默认标题吗

设置了 所有地方都变了 现在想让uni里面的title是pages.json document.title不变

同问 如何解决的

在uni-app中,当你开发H5应用时,默认情况下,页面的标题(即 document.title)会被 navigationBarTitleText 的值自动修改。如果你希望全局控制浏览器的标题,避免它被 navigationBarTitleText 自动覆盖,可以通过编程方式手动设置 document.title

以下是一个实现这一需求的代码案例:

  1. 修改 App.vue 文件

App.vue 中,你可以使用 onShow 生命周期钩子来确保每次页面显示时都设置你想要的标题。同时,你可以通过监听页面的路由变化来动态更新标题。

<template>
  <App />
</template>

<script>
export default {
  onShow() {
    this.updateTitle('默认标题');
    
    // 监听路由变化,更新标题
    if (window.addEventListener) {
      window.addEventListener('hashchange', this.updateTitleOnRouteChange, false);
    } else if (window.attachEvent) {
      window.attachEvent('onhashchange', this.updateTitleOnRouteChange);
    }
  },
  methods: {
    updateTitle(title) {
      document.title = title;
    },
    updateTitleOnRouteChange() {
      // 根据当前路由设置标题,这里可以添加你的逻辑
      // 例如,根据路由地址的不同设置不同的标题
      const currentPage = getCurrentPages()[getCurrentPages().length - 1];
      const routeTitle = currentPage.route.replace(/^\//, '').replace(/\//g, ' - ');
      this.updateTitle(`应用名称 - ${routeTitle}`);
    }
  },
  beforeDestroy() {
    // 移除监听器
    if (window.removeEventListener) {
      window.removeEventListener('hashchange', this.updateTitleOnRouteChange, false);
    } else if (window.detachEvent) {
      window.detachEvent('onhashchange', this.updateTitleOnRouteChange);
    }
  }
}
</script>
  1. 页面级别的标题设置

在每个页面中,如果你需要覆盖全局设置的标题,你可以在页面的 onLoadonShow 钩子中调用 updateTitle 方法。

<script>
export default {
  onLoad() {
    // 根据需要设置页面标题
    document.title = '特定页面的标题';
  }
}
</script>

注意:在 App.vue 中,我们使用了 getCurrentPages 方法来获取当前显示的页面,并通过 route 属性来动态生成标题。这种方法在路由变化时非常有用,但你需要根据你的应用逻辑来调整标题的生成方式。

通过这种方式,你可以全局控制uni-app H5应用在浏览器中的标题,避免它被 navigationBarTitleText 自动修改。

回到顶部