目录!你怎么了目录!!
起因
因为才刚刚开始摸索Hexo和yilia主题,所以有些参数还没完全弄明白,在一个一个试。在试的过程中发现yilia/_config.yml
中有个目录的参数没开,而当我开了目录之后发现,页面的锚点跳转功能!没了!怎么点都没有反应!
经过
Bing,启动!
经过一番没头没脑的搜索且试了一大堆解决方案后,我大概整理了一下,主要就是两种情况。
toc插件冲突
第一种情况就是自己装了一个toc插件,和yilia自带的toc冲突了。这个很好解决,像yilia等已经支持目录的主题,直接卸载掉toc插件即可。
1 | npm remove hexo-toc --save |
卸载后可以重新hexo cl
清理下缓存,再hexo g&&hexo s
应该就行了。
Aplayer插件冲突
测试方法:
打开控制台,找到事件监听器(Event Listener),检查目录中的标题,可以发现click下方多了一个事件a toc-link
,如果该事件的来源是smoothscroll.js
,那么就说明这就是由于加入Aplayer
插件导致的。
这个情况有一点头疼,但是得益于大佬的帮助也是能很简单的解决的!
详情可以参考《使用 Aplayer 导致博客目录跳转失效》。大佬写的很详细,我就再简单说一下解决思路,再作为一个小白给其他小白补充一点细节问题。
解决方法:
很简单,找到node_modules\smoothscroll
。可以先点开smoothscroll.js的文件查看,然后就可以发现它在处理 hash 时只测试了英文,而使用中文时,中文字符转成了 Unicode 码,下面函数的判断条件无法成立,后面的点击处理也就失效了。
1 | var linkHandler = function(ev) { |
直接把中间的if (location.hash !== this.hash) window.history.pushState(null, null, this.hash)
改成if (decodeURIComponent(location.hash) !== decodeURIComponent(this.hash)) window.history.pushState(null, null, decodeURIComponent(this.hash))
即可。然后还需要用node.js将他转成smoothscroll.min.js的文件。
好像有点麻烦啊(因为我自己试了下,光做到这好像还没有用,后面应该还需要转别的文件,我就不太会弄了hhh 是真的一点也弄不到懂)。
当然,也可以不这么麻烦。直接复制大佬打包修复的文件就好了!链接:https://src.wangriyu.wang/lib/Aplayer/APlayer.min.js。
直接去node_modules\aplayer\dist
找到APlayer.min.js
文件,直接覆盖原来的就行了。
瞎侃一下
其实解决方法真的很简单啊啊啊,但是找的时候花了巨多时间 人家本来就傻,你还欺负人家(bushi
然后试着试着Aplayer又不干活了,目录也不行了,页面也乱了,我还忘了备份之前的东西,给我好一顿找才恢复到原来的样子。总之,最终解决就行~