在使用了aplayer后,发现toc失效了,怎么点都没有用,前两天折腾过pjax,但是也没折腾出来,所以这个功能的锅先排除掉,Google上搜了下,看到了有好多大佬发的文章证实了我的猜测。

  首先要感谢这位大佬解决了我的困扰,然后这是他写的解决方案,

  我简单说一下问题所在,就是Aplayer下的smoothscroll插件在处理跳转连接的hash时只对英文处理有效,而中文会转成Unicode码,无法处理,所以跳转就会失效。 解决办法:

  1. 找到主题路径下的APlayer.min.js文件
  2. ctrl+f搜索hash定位到要修改的地方
  3. 在引用hash的对象前,包一层decodeURIComponent(),这样就能正常处理中文的标签和 location 的对应问题了

例如:

if (decodeURIComponent(location.hash) !== decodeURIComponent(this.hash))

  其实就是把hash进行decodeURIComponent处理,这样就能正常处理中文的标签和位置的对应问题了。

我这里的话之前用的是官方js文件,嫌麻烦的话直接换成大佬改好的js文件即可APlayer.min.js