其他分享
首页 > 其他分享> > [业余] 主题SimpleMemory如何在开关Darkmode的同时切换代码高亮的主题 —— *啪嗒*,I'm so sorry 4u.

[业余] 主题SimpleMemory如何在开关Darkmode的同时切换代码高亮的主题 —— *啪嗒*,I'm so sorry 4u.

作者:互联网

博客园的主题SimpleMemory如何在开关Darkmode的同时切换代码高亮的主题


前言


需要准备的东西


提前要做的


方法

  1. 在你下好的SimpleMemory主题文件夹中打开dist/style/dayNight.b054622b.css
  2. 打开你下载好的highlight.zip,在style文件夹中选择你想要在按下日夜切换按钮之后改变的代码高亮主题
  3. 比如小冰喜欢在切换Darkmode的同时切换到Shades Of Purple的主题,那就打开shades-of-purple.min.css,全选里面的内容,全部复制到dayNight.b054622b.css里面,保存
  4. 把整个SimpleMemory主题文件夹内的所有内容上传到你的有着https协议的云资源服务器或CDN加速节点
  5. 打开你的博客园后台,展开博客侧边栏公告,一直拉到最后
  6. 替换掉<script src="https://cdn.jsdelivr.net/gh/BNDong/Cnblogs-Theme-SimpleMemory@v2.1.0/dist/simpleMemory.js" defer></script>中双引号的部分,并换成你云资源服务器或CDN加速节点的链接。
  1. 保存

something more


可能但"没实践过"的方法

把主题资源文件夹里有关dayNightSwitch的js和main.js文件都查阅了几遍
发现有这样一条代码在dayNight.js里面(../src/components/dayNight/dayNight.js)

$('head').append('<link type="text/css" id="baseDarkCss" rel="stylesheet" href="'+_.__status.dayNightCssHref+'">');

查阅了一些文章,发现这是一个通过JavaScript来插入html元素的语句
再翻翻main.js (.../src/main.js),发现_.__status.dayNightCssHref中的_.__status是用来查阅页面状态信息的,而_.__status.dayNightCssHref便是用来记录夜间css样式文件路径
于是就有了另一种"可能的"方法:
也搞一个类似的小东西来记录想要的代码高亮主题路径,并且将其插入到html中,覆盖原来的样式
(但是,我不会:D)

如果让正在看这篇文章的你高血压了,对不起!!!!!!!!!!


探索的过程(不用管w)和原理(猜的_?)

F12打开元素,狂摁dayNightSwitch,发现在Darkmode下head里面新增了一个link元素,

<link rel="stylesheet" type="text/css" href="https://cdn.cnblogs.com/jsDelivr/gh/BNDong/Cnblogs-Theme-SimpleMemory@v2.1.0/dist/style/dayNight.b054622b.css" id="baseDarkCss">

关闭Darkmode的时候,这个元素就消失了,而页面也变成了Lightmode
在把主题源文件翻来覆去后,觉得这是夜间模式的样式文件,并且覆盖了原来页面的样式
......
在一番折腾后又发现,head里面还有个link元素

<link id="highlighter-theme-docco" type="text/css" rel="stylesheet" href="/css/hljs/docco.css?v=96AvS5-MYBJiKvD1E0JKQz8x73b_-MURZdItl-c5YcI">

原来是在后台设置的代码高亮样式
那咱就寻思寻思——要是把另一个代码高亮样式复制到dayNight.b054622b.css里面,是不是就也能覆盖掉原来的样式呢? 所以就把已经修改好的dayNight.b054622b.css传到了博客园自带的空间里
——然后成功了!
但是要怎么和dayNightSwitch绑到一起?
(我也不知道我当时在想什么乱七八糟的,沉思了好多好多好多时间)
翻来覆去,看到官方文件可以自己托管主题资源,于是我开始找一个云端服务器
阿里云、华为云、腾讯云...好贵!
突然看到前几年沸沸扬扬的阿贝云,想起来当时自己也搞过这玩意(但是真的lap sap)
于是上传,修改,保存,什么什么的...

居然白屏了??!!!!!
于是查来查去,原来是因为有着https协议的博客园要是加载了破烂http协议的阿贝云服务器文件,就不安全,不安全浏览器就要保护小冰...
然并卵,允许查看不安全的内容后,居然不会改变..

又翻来覆去查了好久好久,直到我发现...
把dayNight.b054622b.css从云服务器里删了,the goddamned Darkmode还会加载!??
于是又爬着这条藤子慢慢摸索,发现浏览器会有一个功能叫做"从磁盘缓存"...
换了崭新的Chrome之后,重新上传了修改后的dayNight.b054622b.css的文件就可以用了。

如果让正在看这篇文章的你高血压了,对不起!!!!!!!!!!

当然整个探索的过程不止这么简单...只不过写的是一种已经实践出来的方法的探索过程而已.
其他觉得可行的方法已经写在上面了w,爱看不看!小冰才不管你呢


资源地址因http协议导致白屏的解决方案

自己骗自己,只能拿来调试而已:3 因为大多数人都不开,进来看都是白屏。所以还是要换https协议的资源服务器


有关的资料

Chrome在https网站中打开http图片,打不开的解决方案 —— atzqtzq的博客

javascript动态插入html元素 —— longshengguoji的博客


好文推荐

博客园SimpleMemory添加Live 2D不生效解决方法 —— 小能日记 来自我的强者朋友


sentences

呜呜呜我是大憨憨


:3

标签:...,4u,高亮,主题,js,so,dayNight,css
来源: https://www.cnblogs.com/drctrb/p/16056991.html