html ajax修改title,使用MutationObserver和DOMSubtreeModified监听HTML中title的变化

简介

这是我在博客主题和插件开发时遇到的一个问题,因为博文都采用Ajax加载,而代码高亮渲染只会在其js文件第一次加载,或手动调用时才会对文章中的代码进行高亮渲染,怎么让Ajax加载的文章能够及时高亮渲染就是个问题了。想了一下可能的解决方法:每次Ajax加载时都重新加载高亮js文件,或执行js语句

定时执行js语句

监听DOM,DOM出现变化时则执行js语句

方法1是最简单明了的,但因为代码高亮属于插件功能,不太能够知道Ajax会加载哪些内容,不太容易挂“钩子”上去。方法2效率太低不考虑。就只有方法3啦,因为我只需要在加载新文章时高亮渲染,所以DOM只用监听title就好了。

监听DOM一般用DOMSubtreeModified或MutationObserver,但发现DOMSubtreeModified已经deprecated,而MutationObserver只在比较新的浏览器上才支持,所以考虑同时使用这两个方法,来支持绝大多数浏览器。

MutationObserver

W3C MutationObserver介绍:[4.3 Mutation observers]

MutationObserver IE要11及以上,详细可以看[Can I use Mutation ?]

直接贴代码吧,也没多少晦涩难懂的

都是一个套路,就是想要监听DOM的不同内容可能需要修改MutationObserverConfig。这样每当title内容有变化时,就会触发do_render()。

DOMSubtreeModified

DOMSubtreeModified实际上是属于MutationEvent的,W3C MutationEvent介绍:[C.4 Legacy MutationEvent events]

注意MutationEvent已经deprecated了,如果不是为了兼容老的浏览器,请使用MutationObserver

DOMSubtreeModified的使用简单多了,直接上代码

这样每当title内容有变化时,就会触发do_render()。

结合MutationObserver和DOMSubtreeModified

当然是优先使用MutationObserver了,如果MutationObserver不支持,就使用DOMSubtreeModified,如果DOMSubtreeModified也不支持的话...就不支持了...

使用MutationObserver和DOMSubtreeModified基本可以兼容IE9以来的所有浏览器了,但如果你还想兼容IE8的话...可以考虑我之前说的方法2了...不过我是不考虑了。

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值