页面中title的修改是非常常用的功能,尤其是 title ,icon 和 theme-color。我们需要有个 hooks 来方便的管理他们,并且提供双向绑定的能力。

支持的设置项

页面基本信息最重要的是title 和 icon,theme-color 在 safari 中支持较好。但是 chrome 系列的 pc 浏览器中支持不多,相对不常用。keywords 和 description 则一般用于 seo,每个页面使用一次即可。

属性名称 描述 类型 是否常用
title 页面的标题 string
icon 页面的icon,也可以用来指示任务状态 url
themeColor 页面的主题色 颜色(string)
keywords 页面的关键字 string[]
description 页面的描述 string

受控设置

在 2020 年我们终于有了一个没有副作用的的方式来监听 页面的标题改动,感谢 MutationObserver。

  1. var target = document.querySelector('title');
  2. // create an observer instance
  3. var observer = new MutationObserver(function(mutations) {
  4. // We need only first event and only new value of the title
  5. console.log(document.title );
  6. });
  7. // configuration of the observer:
  8. var config = { subtree: true, characterData: true, childList: true };
  9. // pass in the target node, as well as the observer options
  10. observer.observe(target, config);

SEO

node 中没有 MutationObserver 和 document ,可能需要一个seo的兼容方式,现在的想法是直接短路,不进行任何设置。

因为不是很了解 seo,希望有更好的方案。