Closed junqi-lu closed 2 years ago
为了让博客新增时效性提醒, 我参考了通过 Hexo 5 注入器为主题添加新功能, 在body-end注入了以下脚本.
(function() { var times = document.getElementsByTagName('time'); if (times.length === 0) { return; } var posts = document.getElementsByClassName('post-content'); if (posts.length === 0) { return; } var pubTime = new Date(times[0].dateTime); /* 文章发布时间戳 */ var now = Date.now() /* 当前时间戳 */ var interval = parseInt(now - pubTime) /* 发布时间超过指定时间(毫秒) */ if (interval > 3600*24*100*1000){ var days = parseInt(interval / 86400000) posts[0].innerHTML = '<div class="note note-warning" style="font-size:0.9rem"><p>' + '<div class="h6">文章时效性提示</div><p>这是一篇发布于 ' + days + ' 天前的文章,部分信息可能已发生改变,请注意甄别。' + '</p></p></div>' + posts[0].innerHTML; } })();
加密文章既能正常解密, 同时也能在文章顶部显示时效性提醒.
在显示文章时效性提醒时, 在加密文章输入密码后按回车没有反应.
控制台没有报错. 更换浏览器无果.
但是官方测试样例可以正常解锁.
废了老半天劲, 把bug定位到了post-centent标签上, 改变了innerHTML后与加密插件有所冲突.
目前的解决方案是时效性提醒放到post-header标签上.
(function () { var times = document.getElementsByTagName('time'); if (times.length === 0 || times.length > 2) { return; } var header = document.getElementsByClassName('post-header'); if (header.length === 0) { return; } var pubTime = new Date(times[0].dateTime); /* 文章发布时间戳 */ var now = Date.now() /* 当前时间戳 */ var interval = parseInt(now - pubTime) /* 发布时间超过指定时间(毫秒) */ if (interval > 3600 * 24 * 100 * 1000) { var days = parseInt(interval / 86400000) header[0].innerHTML = '<div class="note note-warning" style="font-size:0.9rem">' + '<p>' + '<div class="h6">文章时效性提示</div>' + '<p>这是一篇发布于 ' + days + ' 天前的文章,部分信息可能已发生改变,请注意甄别。</p>' + '</p>' + '</div>' + header[0].innerHTML; } })();
老实说找出bug后也不知道再提issue是否合适. 不管怎样, 这篇issue就给后来人当作参考吧.
部分版本信息如下
NexT version: 8.7.1 hexo-blog-encrypt: 3.1.6 hexo: 5.4.0 hexo-cli: 4.3.0 os: darwin 20.6.0 11.5.2 node: 16.8.0 v8: 9.2.230.21-node.20
Closed and Pinned. Thanks.
Issue
为了让博客新增时效性提醒, 我参考了通过 Hexo 5 注入器为主题添加新功能, 在body-end注入了以下脚本.
Expected Behavior
加密文章既能正常解密, 同时也能在文章顶部显示时效性提醒.
Actual Behavior
在显示文章时效性提醒时, 在加密文章输入密码后按回车没有反应.
控制台没有报错. 更换浏览器无果.
但是官方测试样例可以正常解锁.
Temporary solution
废了老半天劲, 把bug定位到了post-centent标签上, 改变了innerHTML后与加密插件有所冲突.
目前的解决方案是时效性提醒放到post-header标签上.
老实说找出bug后也不知道再提issue是否合适. 不管怎样, 这篇issue就给后来人当作参考吧.
Specifications
部分版本信息如下