c***@163.com
c***@163.com
  • 发布:2019-09-29 11:25
  • 更新:2021-01-06 15:30
  • 阅读:4010

怎样获取navigationBar的title内容?

分类:uni-app

uni.setNavigationBarTitle 是可以设置title的内容,但是没有方法获取title的内容。

我要解决的问题是想通过Vue.mixin混入函数把所有title读取出来,翻译成本地化内容。
我在chrome调试的时候发现有this.$holder.navigationBarTitleText里面保存的title,能正常工作。 但是到是手机环境就没有这个变量了。 现在想通过获取title得到内容进行本地化功能。 真机环境下找了很久无果,但是觉得应该是有方法的,希望能有人分享一下经验。

2019-09-29 11:25 负责人:无 分享
已邀请:
c***@163.com

c***@163.com (作者)

通过分析源码,发现H5和app plus分走两个不同的方法获取内容。
自己写了一个方法获取title。 建议官方下个版本补一个这个函数进api。


function getCurrPage() {  
    try {  
        let pages = getCurrentPages();  
        if (pages.length) {  
            return pages[pages.length - 1];  
        }  
    } catch (e) {}   
    return undefined;  
}  
function getNavigationBarTitle() {  
    let page = getCurrPage();  
    if (page) {  
        let view = page.$holder;  
        if (view) {  
            // h5  
            return view.navigationBar.titleText;  
        } else {  
            // app-plus  
            try {  
                view = page.$getAppWebview();  
                if (view) {   
                    const style = view.getStyle()  
                    if (style && style.titleNView) {  
                        return style.titleNView.titleText;  
                    }  
                }  
            } catch (e) {  
                if (process.env.NODE_ENV !== 'production') {  
                    console.log('getCurrentPages is not ready')  
                }  
            }  
        }  
    }  
    return undefined;  
}
c***@163.com

c***@163.com (作者)

我看源码里面也是获取$holder来设置title的
但是这段代码在手机上就是没用。
用uni.setNavigationBar 又可以生效。求高手指点。

function setNavigationBar (type, args) {  
  const pages = getCurrentPages()  
  if (pages.length) {  
    const page = pages[pages.length - 1].$holder  

    switch (type) {  
      case 'setNavigationBarColor':  
        const {  
          frontColor,  
          backgroundColor,  
          animation  
        } = args  

        const {  
          duration,  
          timingFunc  
        } = animation  

        if (frontColor) {  
          page.navigationBar.textColor = frontColor === '#000000' ? 'black' : 'white'  
        }  
        if (backgroundColor) {  
          page.navigationBar.backgroundColor = backgroundColor  
        }  
        page.navigationBar.duration = duration + 'ms'  
        page.navigationBar.timingFunc = timingFunc  
        break  
      case 'showNavigationBarLoading':  
        page.navigationBar.loading = true  
        break  
      case 'hideNavigationBarLoading':  
        page.navigationBar.loading = false  
        break  
      case 'setNavigationBarTitle':  
        const {  
          title  
        } = args  
        page.navigationBar.titleText = title  
        if (__PLATFORM__ === 'h5') {  
          document.title = title  
        }  
        break  
    }  
  }  
  return {}  
}
飞鱼Sss

飞鱼Sss - 飞鱼Sss介绍

不行~

w***@foxmail.com

w***@foxmail.com

今年开发银联小程序,想要动态设置标题,用你的方式完美结局,感谢大佬

该问题目前已经被锁定, 无法添加新回复