Skip to content

[净化标题消息] 改用更稳定的实现方案#93

Merged
XIU2 merged 1 commit into
XIU2:masterfrom
liangjiancang:dev
Sep 17, 2021
Merged

[净化标题消息] 改用更稳定的实现方案#93
XIU2 merged 1 commit into
XIU2:masterfrom
liangjiancang:dev

Conversation

@liangjiancang

Copy link
Copy Markdown
Contributor

这一方案的优势之处在于:

  1. 不会与第三方代码冲突。若第三方在本脚本执行前,使用 defineProperty 重新定义 document.title 属性,会使本脚本抛出异常停止工作。反之则使第三方无法正常工作。这也是本人所遇到的问题。
  2. 原先代码没有考虑 document.title 读取问题,其实已经影响到知乎官方代码的读取(在访问器里打个断点可以跟踪到,不过似乎并没有对官方代码执行造成实质性的不良影响)。
  3. <title> 是底层机制,对标题修改的拦截性比 document.title 全面。
  4. 若后续需求有变,需要根据条件决定是否允许标题修改,则 defineProperty 方案改动更麻烦。

@XIU2 XIU2 merged commit fe08378 into XIU2:master Sep 17, 2021
@XIU2

XIU2 commented Sep 17, 2021

Copy link
Copy Markdown
Owner

不错欧~
我对 MutationObserver 不太熟,倒是不知道可以这样用。。。

一开始我收到这个需求后,想不到什么更好的实现方法,尝试监控 document.title 对象值的变化,结果发现不行,但是意外发现这样做会导致 document.title 被锁死,无法再修改其值,测试了下也是歪打正着,没有遇到什么 BUG(知乎的报错也没看到什么实质影响),就凑活着用了。。。

一会我递增一下版本号~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants