├── icon ├── QQ.jpeg ├── use.jpg ├── icon.png └── exclusive-translation.png ├── tea.yaml ├── LICENSE ├── README.md ├── index.css └── index.js /icon/QQ.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wandou-cc/blog-ui/HEAD/icon/QQ.jpeg -------------------------------------------------------------------------------- /icon/use.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wandou-cc/blog-ui/HEAD/icon/use.jpg -------------------------------------------------------------------------------- /icon/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wandou-cc/blog-ui/HEAD/icon/icon.png -------------------------------------------------------------------------------- /icon/exclusive-translation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wandou-cc/blog-ui/HEAD/icon/exclusive-translation.png -------------------------------------------------------------------------------- /tea.yaml: -------------------------------------------------------------------------------- 1 | # https://tea.xyz/what-is-this-file 2 | --- 3 | version: 1.0.0 4 | codeOwners: 5 | - '0x35E95DD57848e20127221426788B7f832030a41d' 6 | quorum: 1 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 wandou-cc 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 |

3 | 4 | 5 | 6 |
7 | 8 | GitHub tag (latest by date) 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |

37 | 38 | ## 设计初衷 39 | 作为一个CV工程师,面向CSDN 百度编程的程序员,每天都会用到CSDN 博客园 这种博客平台 又有个种限制 花里胡哨的UI页面 各种广告弹窗 还是比较烦人的 于是抽空搞了个插件。 40 | 41 | 大家可以试试 有问题及时联系作者就好 42 | 43 | 目前移动端问题比较多 尽量不要用移动端 精力有限 见谅 后续会考虑重新插件 44 | 45 | `油候`, `暴力猴` 均全部支持 46 | 47 | 祝各位使用愉快吧🌟🌟 48 | 49 | ## 兼容问题 50 | 测试了主流常用浏览器 `chrome` `edge` `360` `FireFox` `X浏览器` 都没问题 51 | 52 | 入口位置 移动端PC端同步也不区分平台 53 | 54 | ## 版本更新 55 | ### 1.3.4 56 | |序号 | 功能 | 57 | | ----------- | ----------- | 58 | | 1 | 知乎查看模式更新 | 59 | | 2 | 修复csdn不能复制问题 | 60 | 61 | ### 1.3.3 62 | |序号 | 功能 | 63 | | ----------- | ----------- | 64 | | 1 | 增加知乎 | 65 | | 2 | 删除在线统计 | 66 | 67 | ### 1.3.2 68 | |序号 | 功能 | 69 | | ----------- | ----------- | 70 | | 1 | 优化掘金 | 71 | | 2 | 增加在线统计 | 72 | 73 | ### 1.3.1 74 | |序号 | 功能 | 75 | | ----------- | ----------- | 76 | | 1 | 优化 | 77 | 78 | ### 1.2.9 79 | |序号 | 功能 | 80 | | ----------- | ----------- | 81 | | 1 | 修复移动端不能移动的bug | 82 | | 2 | 去掉思否处理 | 83 | | 3 | 增加知乎外链跳转 | 84 | 85 | 最近比较忙 更新时间有限见谅 有问题可直接提给我 86 | 87 | ### 1.2.8 88 | |序号 | 功能 | 89 | | ----------- | ----------- | 90 | | 1 | 修复移动端不能移动的bug | 91 | | 2 | 增加思否处理 | 92 | 93 | ### 1.2.7 94 | |序号 | 功能 | 95 | | ----------- | ----------- | 96 | | 1 | 优化性能 | 97 | | 2 | 增加掘金处理 | 98 | 99 | 掘金网站 由于vue框架写的 路由变化 导致我获取不到地址 所以在跳转到首页以及搜索页面的时候 需要刷新一下才能生效(想办法解决中) 100 | 101 | 102 | ### 1.1.6 103 | |序号 | 功能 | 104 | | ----------- | ----------- | 105 | | 1 | 修复若干bug | 106 | | 2 | 增加显示模式可以铺平可以居中显示 | 107 | | 3 | 增加目录锁定 | 108 | | 4 | 增加白色背景 对暗色主题兼容不好 | 109 | 110 | 111 | ### 1.1.5 112 | |序号 | 功能 | 113 | | ----------- | ----------- | 114 | | 1 | 修复若干bug | 115 | | 2 | 优化滚动条 | 116 | | 3 | 增加暴力猴支持 | 117 | | 4 | 入口支持拖动放置 | 118 | 119 | 120 | ### 1.1.4 121 | |序号 | 功能 | 122 | | ----------- | ----------- | 123 | | 1 | 修复文章详情页面不能打开登陆弹窗问题 | 124 | | 2 | 优化界面 | 125 | | 3 | 添加清除缓存功能 | 126 | 127 | 128 | ### 1.1.3 129 | |序号 | 功能 | 130 | | ----------- | ----------- | 131 | | 1 | 修复了若干BUG | 132 | | 2 | 去掉了H5状态下相关阅读打开app | 133 | | 3 | 去掉了是否继续浏览器阅读 | 134 | | 4 | 修复了火狐浏览器中滚动异常问题 | 135 | | 5 | 外链直接跳转 github加速除外 | 136 | | 6 | 添加列表页面的优化 | 137 | | 7 | 添加了搜索页面的优化 | 138 | 139 | 140 | ### 1.0.2 141 | 兼容火狐的问题 142 | ### 1.0.1 143 | 处理CSDN不同浏览器bug 144 | 145 | ### 1.0.0 146 | 基础版本 主要对 CSDN 文章详情页面进行优化 主要对 顶部 左侧 右侧 底部的ui展示 均可自定义配置展示 147 | 148 | |序号 | 功能 | 149 | | ----------- | ----------- | 150 | | 1 | 动态配置右侧显示 自定义配置显示模块 | 151 | | 2 | 去掉未登录状态下的顶部多余选项 | 152 | | 3 | 去掉复制超过140字符剪辑版版权的问题 | 153 | | 4 | 免登录复制 | 154 | | 5 | 自动展开代码块 | 155 | 156 | ## 使用 157 | 非常简单 当你安装成功之后 左侧将会出现一个 158 | 159 | 162 | 163 | 164 | 标志 悬浮即可 查看配置项 165 | 166 | 当然啦在移动端还是PC端是不一样的 167 | 168 | 169 | 170 | ## 常见问题 171 | 前端的同学可能一看就明白其实就是修改了样式 调整了布局 所以就涉及到元素选择 所以官方改了功能自然就会有问题 172 | 173 | 对于功能的失效联系作者 会及时更改修复 问题不大 174 | 175 | 176 | ## 联系方式 177 | 有问题可以进qq 群交流下载资源也可以找群主`免费`下载 后期可能搞个自助下载 178 | 179 | 180 | -------------------------------------------------------------------------------- /index.css: -------------------------------------------------------------------------------- 1 | /* a:link, 2 | a:visited, 3 | a:hover, 4 | a:active { 5 | color: #4f4f4f; 6 | text-decoration: none; 7 | } */ 8 | 9 | body { 10 | touch-action: none !important; 11 | } 12 | 13 | #blogUiApp { 14 | position: fixed; 15 | left: 5px; 16 | top: 150px; 17 | z-index: 9999; 18 | } 19 | 20 | .position { 21 | position: relative; 22 | height: 100%; 23 | width: 100%; 24 | } 25 | 26 | #blog-ui-main { 27 | position: absolute; 28 | left: 8px; 29 | top: 8px; 30 | cursor: pointer; 31 | box-shadow: 0 0 10px #ccc; 32 | border-radius: 5px; 33 | background-color: #fff; 34 | width: 28px !important; 35 | height: 28px !important; 36 | z-index: 999 !important; 37 | opacity: 0.6; 38 | animation: svgAnimation 10s infinite; 39 | } 40 | 41 | #blog-ui-main:hover { 42 | border-radius: 0px; 43 | box-shadow: 0 0 10px #fff; 44 | transition: all 0.5s; 45 | opacity: 1; 46 | } 47 | 48 | @keyframes svgAnimation { 49 | 0% { 50 | transform: translateY(0px) 51 | } 52 | 53 | 30% { 54 | transform: translateY(-5px) 55 | } 56 | 57 | 50% { 58 | transform: translateY(0px) 59 | } 60 | 61 | 70% { 62 | transform: translateY(-5px) 63 | } 64 | 65 | 100% { 66 | transform: translateY(0px) 67 | } 68 | 69 | /* to { 70 | transform: translate(0) 71 | } */ 72 | } 73 | 74 | #blog-main { 75 | position: absolute; 76 | height: 60vh; 77 | width: 400px; 78 | top: -10px; 79 | left: -3px; 80 | z-index: 99; 81 | display: none; 82 | border-radius: 5px; 83 | box-shadow: 0 0 10px #ccc; 84 | background-color: #fff; 85 | padding: 10px; 86 | font-size: 12px; 87 | color: #4f4f4f; 88 | } 89 | 90 | .blog-main-title { 91 | text-align: center; 92 | font-size: 18px; 93 | margin: 8px; 94 | } 95 | 96 | .blog-main-title a { 97 | font-weight: 700; 98 | } 99 | 100 | .blog-ui-urltitle { 101 | font-size: 14px; 102 | margin: 5px; 103 | } 104 | 105 | .blog-ui-foot { 106 | position: absolute; 107 | bottom: 0; 108 | height: 50px; 109 | width: calc(100% - 20px); 110 | border-top: 1px solid #ddd; 111 | } 112 | 113 | .blog-ui-button { 114 | display: flex; 115 | justify-content: center; 116 | align-items: center; 117 | height: 100%; 118 | } 119 | 120 | .blog-ui-button-confirm { 121 | width: 60px; 122 | height: 30px; 123 | cursor: pointer; 124 | background: #fff; 125 | border: 1px solid #dcdfe6; 126 | outline: none; 127 | border-radius: 4px; 128 | } 129 | 130 | .blog-ui-button-confirm:hover { 131 | background: #104479; 132 | color: #fff; 133 | transition: all 0.5s; 134 | } 135 | 136 | .blog-ui-introduction { 137 | padding: 10px; 138 | } 139 | 140 | .blog-ui-setting { 141 | padding-top: 10px; 142 | height: calc(60vh - 80px); 143 | overflow-y: auto; 144 | position: relative; 145 | white-space: nowrap 146 | } 147 | 148 | 149 | .blog-ui-setting::-webkit-scrollbar { 150 | width: 6px; 151 | height: 6px; 152 | } 153 | 154 | .blog-ui-setting::-webkit-scrollbar-button { 155 | display: none; 156 | } 157 | 158 | .blog-ui-setting::-webkit-scrollbar-thumb { 159 | background: rgba(144, 147, 153, 0.3); 160 | cursor: pointer; 161 | border-radius: 4px; 162 | } 163 | 164 | .blog-ui-setting::-webkit-scrollbar-corner { 165 | display: none; 166 | } 167 | 168 | .blog-ui-setting::-webkit-resizer { 169 | display: none; 170 | } 171 | 172 | 173 | .blog-ui-config-title { 174 | padding: 5px; 175 | font-weight: 800; 176 | } 177 | 178 | .blog-ui-item-title { 179 | font-size: 16px; 180 | margin: 10px 0px; 181 | } 182 | 183 | .blog-ui-item { 184 | margin: 0px 8px; 185 | } 186 | 187 | .blog-ui-csdn-main { 188 | margin-top: 20px; 189 | display: flex !important; 190 | flex-direction: column; 191 | } 192 | 193 | .blog-ui-config-center { 194 | display: flex; 195 | justify-content: space-between; 196 | flex-wrap: wrap; 197 | } 198 | 199 | .blog-ui-config-center button { 200 | padding: 5px 10px; 201 | border-radius: 3px; 202 | color: #fff; 203 | border: none 0 !important; 204 | cursor: pointer; 205 | } 206 | 207 | .buttoncolor1 { 208 | background-image: linear-gradient(45deg, #13547a 0%, #80d0c7 100%); 209 | } 210 | 211 | .buttoncolor2 { 212 | background-image: linear-gradient(60deg, #96deda 0%, #50c9c3 100%); 213 | } 214 | 215 | .setting-item { 216 | display: flex; 217 | align-items: center; 218 | width: calc(50% - 20px); 219 | margin: 5px; 220 | } 221 | 222 | .form-check-label { 223 | margin-left: 10px; 224 | } 225 | 226 | .dialog-dom { 227 | position: fixed; 228 | top: 100px; 229 | left: 50%; 230 | transform: translateX(-50%); 231 | color: green; 232 | background-color: rgb(179, 232, 238); 233 | border-radius: 5px; 234 | z-index: 999; 235 | padding: 5px 15px; 236 | opacity: 0; 237 | } 238 | 239 | pre { 240 | -webkit-touch-callout: inherit !important; 241 | -webkit-user-select: inherit !important; 242 | -khtml-user-select: inherit !important; 243 | -moz-user-select: inherit !important; 244 | -ms-user-select: inherit !important; 245 | user-select: inherit !important; 246 | } 247 | 248 | code { 249 | -webkit-touch-callout: inherit !important; 250 | -webkit-user-select: inherit !important; 251 | -khtml-user-select: inherit !important; 252 | -moz-user-select: inherit !important; 253 | -ms-user-select: inherit !important; 254 | user-select: inherit !important; 255 | } 256 | .csdn-common-logo-advert { 257 | display: none !important; 258 | } 259 | .csdn-side-toolbar { 260 | left: inherit !important; 261 | } 262 | 263 | 264 | .bottom-tip { 265 | width: 100%; 266 | margin-top: 10px; 267 | border-top: 1px solid #ccc; 268 | } 269 | 270 | 271 | .gotogithub { 272 | text-align: center; 273 | margin-top: 10px; 274 | } 275 | 276 | .statement { 277 | padding: 5px; 278 | white-space: normal; 279 | font-size: 12px; 280 | color: #666; 281 | border-top: 1px solid #ccc; 282 | 283 | } 284 | 285 | .blog-ui-prompt { 286 | margin: 5px 5px 10px 5px; 287 | white-space: normal; 288 | } 289 | 290 | .blog-ui-version { 291 | text-align: center; 292 | font-size: 14px; 293 | font-weight: 800; 294 | margin: 10px; 295 | } 296 | 297 | .blog-ui-addQQ { 298 | text-align: center; 299 | text-shadow: 0px 0px 1px #666; 300 | font-weight: 800; 301 | } 302 | 303 | .blog-ui-issues { 304 | margin: 10px; 305 | } 306 | 307 | .blog-ui-issues a { 308 | display: flex; 309 | align-items: center; 310 | justify-content: center; 311 | } 312 | 313 | .blog-ui-advertis { 314 | padding: 15px 0px; 315 | border-bottom: 1px solid #ccc; 316 | border-top: 1px solid #ccc; 317 | } 318 | 319 | .blog-ui-advertis .advertis-warn { 320 | font-size: 16px; 321 | font-weight: 600; 322 | } 323 | 324 | .blog-ui-advertis a { 325 | display: flex; 326 | align-items: center; 327 | } 328 | 329 | .blog-ui-advertis img { 330 | width: 28px; 331 | height: 35px; 332 | margin: 10px; 333 | } 334 | 335 | .blog-top-banner, 336 | .blog-slide-ad-box, 337 | .box-shadow, 338 | #kp_box_www_swiper_ban, 339 | .blog-banner, 340 | .weixin-shadowbox, 341 | .feed-Sign-span, 342 | .feed-Sign-span .feed-Sign-style-old .open_app_channelCode, 343 | .btn_open_app_prompt_div, 344 | .dis-none, 345 | div[id^='dmp_ad_'], 346 | div[id^='kp_box_'] { 347 | display: none !important; 348 | } 349 | 350 | .passport-login-container { 351 | display: none; 352 | } 353 | 354 | 355 | .observeToolbar { 356 | position: relative !important; 357 | z-index: 99 !important; 358 | bottom: 0px !important; 359 | width: 100% !important; 360 | left: 0 !important; 361 | } 362 | 363 | /* 单选 */ 364 | .radio-item { 365 | flex: 1; 366 | display: flex; 367 | align-items: center; 368 | } 369 | 370 | .radio-label { 371 | margin-left: 10px; 372 | } 373 | 374 | .bodyWhite { 375 | background: #eee !important; 376 | } 377 | 378 | .default-menu { 379 | position: fixed; 380 | top: 56px; 381 | display: block; 382 | } 383 | 384 | 385 | .touch-action { 386 | touch-action: none; 387 | } 388 | .touch-action-auto { 389 | touch-action: auto; 390 | } 391 | 392 | /* juejin */ 393 | 394 | .guide-collect-popover, 395 | .vip-content, 396 | .app-download-sidebar-block, 397 | .login-guide-wrap, 398 | .advertisement, 399 | .sticky-block, 400 | .juejin-ab-test-wrap, 401 | .login-popover, 402 | .open-button, 403 | .vip-content { 404 | display: none !important; 405 | } 406 | 407 | 408 | 409 | .online { 410 | margin: 10px; 411 | font-size: 14px; 412 | } 413 | 414 | .waubutton { 415 | margin: 5px 10px; 416 | text-align: center; 417 | background-image: linear-gradient(45deg, #13547a 0%, #80d0c7 100%) !important; 418 | } 419 | .waubutton p { 420 | font-size: 14px !important; 421 | } 422 | 423 | 424 | .zhihuCreateTime { 425 | margin: 20px; 426 | color: #ccc; 427 | } 428 | 429 | #remuneration { 430 | display: none !important; 431 | } -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name ⚡️ 掘金 |csdn |知乎 | 独家UI排版 更方便您的阅读📖 去广告🪧 免登录复制 一键复制 去剪贴板劫持 持续更新 外链跳转 宽屏展示 不定期帮忙下载资源 3 | // @namespace https://github.com/wandou-cc/blog-ui 4 | // @version 1.3.4 5 | // @description ⚡️ 掘金 |csdn | 知乎 独家UI排版 更方便您的阅读📖 去广告🪧 免登录复制 一键复制 劫持剪贴板 持续更新 |💫全新布局|🫥去掉一些花里胡哨的组件,阅读更加清晰|🐯基本实现显示部分由用户自己定制|🌈直接一键复制 不在需要登录|✨展开所有折叠代码,简化操作|支持移动端PC端通通优化|入口支持拖拽放置 6 | // @author wandou-cc 7 | // @include *://*.csdn.net/* 8 | // @include *://*juejin.cn/* 9 | // @include *://*zhihu.com/* 10 | 11 | // @resource css https://cdn.jsdelivr.net/gh/wandou-cc/blog-ui@20230912_v1/index.css 12 | // @require https://unpkg.com/better-scroll@latest/dist/better-scroll.min.js 13 | 14 | // @icon data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAQwAABtbnRyUkdCIFhZWiAAAAAAAAAAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAAHRyWFlaAAABZAAAABRnWFlaAAABeAAAABRiWFlaAAABjAAAABRyVFJDAAABoAAAAChnVFJDAAABoAAAAChiVFJDAAABoAAAACh3dHB0AAAByAAAABRjcHJ0AAAB3AAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAFgAAAAcAHMAUgBHAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z3BhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLW1sdWMAAAAAAAAAAQAAAAxlblVTAAAAIAAAABwARwBvAG8AZwBsAGUAIABJAG4AYwAuACAAMgAwADEANv/bAEMAUDc8RjwyUEZBRlpVUF94yIJ4bm549a+5kcj////////////////////////////////////////////////////bAEMBVVpaeGl464KC6//////////////////////////////////////////////////////////////////////////AABEIA/IDmAMBIgACEQEDEQH/xAAZAAEAAwEBAAAAAAAAAAAAAAAAAgMEAQX/xAAtEAEAAgECBAUFAQEBAQEBAAAAAQIDETEEEiFRMjNBYXETIlKBkUKhFCNisf/EABcBAQEBAQAAAAAAAAAAAAAAAAABAgP/xAAcEQEBAQEBAQEBAQAAAAAAAAAAARExQSECElH/2gAMAwEAAhEDEQA/AJgMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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 15 | // @grant unsafeWindow 16 | // @grant GM_addStyle 17 | // @grant GM_getResourceText 18 | // @grant GM_setValue 19 | // @grant GM_getValue 20 | // @grant GM_deleteValue 21 | // @grant GM_listValues 22 | // @license MIT License 23 | // @note 1.3.4 修复了一些问题 24 | // @noframes 25 | 26 | // ==/UserScript== 27 | 28 | (function () { 29 | GM_addStyle(GM_getResourceText("css")); 30 | const VERSION = '1.3.3' 31 | const TITLE = 'BLOGUI' 32 | 33 | let ISH5 = null 34 | let CURRENTPAGES = null 35 | 36 | const BLOGUICONFIG = { 37 | 2: { 38 | webType: "CSDN", 39 | pc: [ 40 | { 41 | title: "查看模式", 42 | children: [ 43 | { type: "radio", for: "CsdnRadioC", label: "居中显示", checked: true, getEvent: 'csdnRadioC' }, 44 | { type: "radio", for: "CsdnRadioP", label: "铺平展示", checked: false, getEvent: 'csdnRadioP' }, 45 | ] 46 | }, 47 | { 48 | title: "右侧选项", 49 | children: [ 50 | // 左侧 51 | { type: "checked", domId: "#asideProfile", for: "CsdnAuthorInfo", label: "作者信息", checked: true }, 52 | { type: "checked", domId: "#asidedirectory", for: "CsdnDirectory", label: "目录", checked: false, getEvent: 'csdnDirectory' }, 53 | { type: "checked", domId: "#asideSearchArticle", for: "CsdnSerch", label: "搜索博主文章", checked: false }, 54 | { type: "checked", domId: "#asideRank", for: "CsdnAsideRank", label: "是否入选", checked: false }, 55 | { type: "checked", domId: "#asideHotArticle", for: "CsdnHotPage", label: "热门文章", checked: false }, 56 | { type: "checked", domId: "#asideCategory", for: "CsdnCategory", label: "分类专栏", checked: false }, 57 | { type: "checked", domId: "#asideNewComments", for: "CsdnComments", label: "最新评论", checked: false }, 58 | { type: "checked", domId: "#asideNewNps", for: "CsdnNewNps", label: "推荐博客", checked: false }, 59 | { type: "checked", domId: "#asideArchive", for: "CsdnArchive", label: "最新文章", checked: false }, 60 | { type: "checked", domId: "#asideWriteGuide", for: "CsdnWriteGuide", label: "发布文章", checked: false }, 61 | ] 62 | }, 63 | { 64 | title: "文章底部", 65 | children: [ 66 | { type: "checked", domId: ".recommend-box", for: "CsdnRecommend", label: "底部相关推荐", checked: false }, 67 | { type: "checked", domId: "#pcCommentBox", for: "CsdnpcCommentBox", label: "评论", checked: false }, 68 | { type: "checked", domId: "#blogExtensionBox", for: "CsdnblogExtensionBox", label: "引流信息", checked: false }, 69 | { type: "checked", domId: "#treeSkill", for: "CsdntreeSkill", label: "知识档案匹配", checked: false }, 70 | ] 71 | }, { 72 | title: "顶部导航", 73 | children: [ 74 | { type: "checked", domId: "", for: "Csdn2top", label: "顶部导航信息", checked: false, getEvent: 'removeTopbar' }, 75 | ] 76 | }, { 77 | title: "右下角悬浮", 78 | children: [ 79 | { type: "checked", domId: "", for: "CsdnSideToolbar", label: "侧边悬浮(略有延迟)", checked: false, getEvent: 'removeSideToolbar' }, 80 | ] 81 | }, { 82 | title: "其他", 83 | children: [ 84 | { type: "checked", domId: "", for: "whiteBack", label: "白色背景(对于暗色主题兼容并不好)", checked: false, getEvent: 'whiteBack' }, 85 | ] 86 | }, 87 | { 88 | title: "操作", 89 | children: [ 90 | { type: "button", class: "buttoncolor1", label: "初始化当前页面配置", getEvent: 'clearCache("BLOGUICONFIG", "2")' } 91 | ] 92 | } 93 | ], 94 | h5: [ 95 | { 96 | title: "底部", 97 | children: [ 98 | // 底部相关推荐 99 | { type: "checked", domId: "#recommend", for: "CsdnH5Recommend", label: "底部相关推荐", checked: false }, 100 | { type: "checked", domId: "#comment", for: "CsdnH5Comment", label: "底部登录", checked: false }, 101 | { type: "checked", domId: "#blogExtensionBox", for: "CsdnH5blogExtensionBox", label: "引流信息", checked: false }, 102 | { type: "checked", domId: "", for: "CsdnH5operate", label: "底部操作是否固定", checked: false, getEvent: 'operate' } 103 | ] 104 | }, { 105 | title: "顶部", 106 | children: [ 107 | { type: "checked", domId: ".openApp", for: "CsdnH5openApp", label: "打开App", checked: false } 108 | ] 109 | }, 110 | { 111 | title: "操作", 112 | children: [ 113 | { type: "button", class: "buttoncolor1", label: "初始化当前页面配置", getEvent: 'clearCache("BLOGUICONFIG", "2")' } 114 | ] 115 | } 116 | ] 117 | }, 118 | 3: { 119 | webType: "CSDN", 120 | pc: [ 121 | { 122 | title: "顶部导航", 123 | children: [ 124 | { type: "checked", domId: "", for: "Csdn3top", label: "顶部导航信息", checked: false, getEvent: 'removeTopbar' }, 125 | { type: "checked", domId: ".blog-nps", for: "CsdnBlogNps", label: "推荐CSDN", checked: false } 126 | ] 127 | }, { 128 | title: "右侧", 129 | children: [ 130 | { type: "checked", domId: ".blog-slide-box .template", for: "Csdntemplate", label: "热门推荐/作者推荐", checked: true }, 131 | { type: "checked", domId: ".blog-slide-box .blogTree", for: "CsdnblogTree", label: "技能树", checked: true }, 132 | ] 133 | }, 134 | { 135 | title: "其他", 136 | children: [ 137 | { type: "checked", domId: "", for: "CsdnblogNav", label: "平铺显示", getEvent: 'blogNav' } 138 | ] 139 | }, 140 | { 141 | title: "操作", 142 | children: [ 143 | { type: "button", class: "buttoncolor1", label: "初始化当前页面配置", getEvent: 'clearCache("BLOGUICONFIG", "3")' } 144 | ] 145 | } 146 | ] 147 | }, 148 | 4: { 149 | webType: "CSDN", 150 | pc: [ 151 | { 152 | title: "顶部导航", 153 | children: [ 154 | { type: "checked", domId: "", for: "Csdn4top", label: "顶部导航信息", checked: false, getEvent: 'removeTopbar' } 155 | ] 156 | }, 157 | { 158 | title: "右侧", 159 | children: [ 160 | { type: "checked", domId: ".main-rt .so-questionnaire-body", for: "Csdnquestionnaire", label: "推荐CSDN", checked: false }, 161 | { type: "checked", domId: ".main-rt .so-hot-words", for: "Csdnhot-words", label: "相关搜索", checked: false }, 162 | { type: "checked", domId: ".main-rt .wrap-hot", for: "Csdnwrap-hot", label: "猜你想搜", checked: false }, 163 | { type: "checked", domId: ".main-rt .related-list", for: "related-list", label: "热搜榜", checked: false }, 164 | { type: "checked", domId: ".main-rt .so-items-taglist", for: "Csdntaglist", label: "相关标签", checked: false } 165 | ] 166 | }, 167 | { 168 | title: "其他", 169 | children: [ 170 | { type: "checked", domId: "", for: "CsdnSoNav", label: "平铺显示(请勿与其他同用)", getEvent: 'soPc' } 171 | ] 172 | }, 173 | { 174 | title: "操作", 175 | children: [ 176 | { type: "button", class: "buttoncolor1", label: "初始化当前页面配置", getEvent: 'clearCache("BLOGUICONFIG", "4")' } 177 | ] 178 | } 179 | ] 180 | }, 181 | 5: { 182 | webType: "JUEJIN", 183 | pc: [ 184 | 185 | // { 186 | // title: "查看模式", 187 | // children: [ 188 | // { type: "radio", for: "JuejinRadioC", label: "放大显示", checked: true, getEvent: 'juejinRadioC' }, 189 | // { type: "radio", for: "JuejinRadioP", label: "居中显示", checked: false, getEvent: 'juejinRadioP' }, 190 | // ] 191 | // }, 192 | { 193 | title: "顶部", 194 | children: [ 195 | { type: "checked", label: "顶部操作", for: "JuejinTop", checked: false, getEvent: 'JuejinTop' } 196 | ] 197 | }, 198 | { 199 | title: "左边栏", 200 | children: [ 201 | { type: "checked", domId: ".article-suspended-panel", for: "JuejinSuspended", label: "点赞收藏等按钮", checked: false }, 202 | ] 203 | }, 204 | { 205 | title: "右边栏", 206 | children: [ 207 | { type: "checked", domId: ".author-block", for: "JuejinAuthor", label: "作者信息", checked: true }, 208 | { type: "checked", domId: ".article-catalog", for: "JuejinSticky", label: "目录", checked: true, getEvent: 'JuejinGetMenu' }, 209 | { type: "checked", domId: ".wechat-sidebar-block", for: "JuejinSidebar", label: "圈子", checked: false }, 210 | { type: "checked", domId: ".next-article", for: "JuejinNext-article", label: "下一篇", checked: false }, 211 | { type: "checked", domId: ".related-entry-sidebar-block", for: "JuejinRelated", label: "相关文章", checked: false, getEvent: 'JuejinRelated' }, 212 | ] 213 | }, 214 | { 215 | title: "底部", 216 | children: [ 217 | { type: "checked", domId: ".column-container", for: "JuejinContainer", label: "收录", checked: false }, 218 | { type: "checked", domId: ".extension-banner", for: "JuejinExtension-banner", label: "插件", checked: false }, 219 | { type: "checked", domId: ".category-course-recommend", for: "JuejiCategory", label: "相关课程", checked: false }, 220 | { type: "checked", domId: ".comment-list-box", for: "JuejinComment", label: "评论", checked: false }, 221 | { type: "checked", domId: ".recommended-area", for: "JuejinRecommended", label: "相关推荐", checked: false }, 222 | { type: "checked", domId: ".meiqia-btn", for: "JuejinMeiqia", label: "建议反馈", checked: false }, 223 | { type: "checked", domId: ".recommended-links", for: "JuejinLinks", label: "友情链接", checked: false } 224 | ] 225 | }, 226 | { 227 | title: "操作", 228 | children: [ 229 | { type: "button", class: "buttoncolor1", label: "初始化当前页面配置", getEvent: 'clearCache("BLOGUICONFIG", "5")' } 230 | ] 231 | } 232 | ] 233 | }, 234 | 6: { 235 | webType: "JUEJIN", 236 | pc: [ 237 | { 238 | title: "顶部", 239 | children: [ 240 | { type: "checked", label: "顶部操作", for: "JuejinTop", checked: false, getEvent: 'JuejinTop' } 241 | ] 242 | }, 243 | { 244 | title: "右边广告", 245 | children: [ 246 | { type: "checked", domId: ".signin-tip", for: "JuejinSignin", label: "签到", checked: true }, 247 | { type: "checked", domId: ".user-block", for: "JuejinUserBlock", label: "作者榜", checked: false }, 248 | { type: "checked", domId: ".link-block", for: "JuejinLinkBlock", label: "插件列表", checked: false }, 249 | { type: "checked", domId: ".index-aside-footer", for: "JuejinAsideFoot", label: "底部版权", checked: false }, 250 | ] 251 | }, 252 | { 253 | title: "操作", 254 | children: [ 255 | { type: "button", class: "buttoncolor1", label: "初始化当前页面配置", getEvent: 'clearCache("BLOGUICONFIG", "6")' } 256 | ] 257 | } 258 | ] 259 | }, 260 | 7: { 261 | webType: "JUEJIN", 262 | pc: [ 263 | { 264 | title: "顶部", 265 | children: [ 266 | { type: "checked", label: "顶部操作", for: "JuejinTop", checked: false, getEvent: 'JuejinTop' } 267 | ] 268 | } 269 | ] 270 | }, 271 | 8: { 272 | webType: "SiFou", 273 | pc: [ 274 | { 275 | title: "查看模式", 276 | children: [ 277 | { type: "radio", for: "SiFouRadioC", label: "居中显示", checked: true, getEvent: 'SiFouRadioC' }, 278 | { type: "radio", for: "SiFouRadioP", label: "铺平展示", checked: false, getEvent: 'SiFouRadioP' }, 279 | ] 280 | }, 281 | { 282 | title: "文章底部", 283 | children: [ 284 | { type: "checked", domId: "#answer-question", for: "SiFouQuestion", label: "撰写回答", checked: true }, 285 | { type: "checked", domId: "", for: "SiFouMt4", label: "相似问题", checked: true, getEvent: 'similarPro' } 286 | ] 287 | }, { 288 | title: "顶部导航", 289 | children: [ 290 | { type: "checked", domId: "", for: "SiFoutop", label: "顶部导航信息", checked: false, getEvent: 'removeSifouTopbar' }, 291 | ] 292 | }, 293 | { 294 | title: "操作", 295 | children: [ 296 | { type: "button", class: "buttoncolor1", label: "初始化当前页面配置", getEvent: 'clearCache("BLOGUICONFIG", "8")' } 297 | ] 298 | } 299 | ] 300 | }, 301 | 9: { 302 | webType: "SiFou", 303 | pc: [ 304 | { 305 | title: "查看模式", 306 | children: [ 307 | { type: "radio", for: "SiFouRadioC", label: "居中显示", checked: true, getEvent: 'SiFouRadioC' }, 308 | { type: "radio", for: "SiFouRadioP", label: "铺平展示", checked: false, getEvent: 'SiFouRadioP' }, 309 | ] 310 | }, 311 | { 312 | title: "文章底部", 313 | children: [ 314 | { type: "checked", domId: "#comment-area", for: "SiFouComment", label: "评论", checked: true }, 315 | { type: "checked", domId: "", for: "SiFouRead", label: "继续阅读", checked: false, getEvent: 'similarRead' } 316 | ] 317 | }, { 318 | title: "顶部导航", 319 | children: [ 320 | { type: "checked", domId: "", for: "SiFoutop", label: "顶部导航信息", checked: false, getEvent: 'removeSifouTopbar' }, 321 | ] 322 | }, 323 | { 324 | title: "操作", 325 | children: [ 326 | { type: "button", class: "buttoncolor1", label: "初始化当前页面配置", getEvent: 'clearCache("BLOGUICONFIG", "9")' } 327 | ] 328 | } 329 | ] 330 | }, 331 | 10: { 332 | webType: "ZhiHu", 333 | pc: [ 334 | // { 335 | // title: "查看模式", 336 | // children: [ 337 | // { type: "radio", for: "ZhiHuC", label: "居中显示", checked: true, getEvent: 'ZhiHuRadioC' }, 338 | // { type: "radio", for: "ZhiHuP", label: "铺平展示", checked: false, getEvent: 'ZhiHuRadioP' }, 339 | // ] 340 | // }, 341 | { 342 | title: "右侧", 343 | children: [ 344 | { type: "checked", domId: ".css-oyqdpg", for: "ZhihuSimilarQuestions", label: "相关问题", checked: false }, 345 | { type: "checked", domId: "div[data-za-detail-view-path-module_name='相关推荐']", for: "ZhihuRecommend", label: "相关推荐", checked: false }, 346 | { type: "checked", domId: "Footer", for: "ZhihuQFooter", label: "版权其他", checked: false } 347 | ] 348 | } 349 | ] 350 | }, 351 | 11: { 352 | webType: "ZhiHu", 353 | pc: [ 354 | { 355 | title: "查看模式", 356 | children: [ 357 | { type: "radio", for: "ZhiHuC", label: "居中显示", checked: true, getEvent: 'ZhiHuRadioC' }, 358 | { type: "radio", for: "ZhiHuP", label: "铺平展示", checked: false, getEvent: 'ZhiHuRadioP' }, 359 | ] 360 | }, 361 | { 362 | title: "底部", 363 | children: [ 364 | { type: "checked", domId: "div[aria-label='推荐阅读']", for: "ZhihuRead", label: "推荐阅读", checked: false } 365 | ] 366 | } 367 | ] 368 | }, 369 | 12: { 370 | webType: "ZhiHu", 371 | pc: [ 372 | { 373 | title: "右侧", 374 | children: [ 375 | { type: "checked", domId: "div[aria-label='搜索发现']", for: "ZhihuSearch", label: "搜索发现", checked: false }, 376 | { type: "checked", domId: "Footer", for: "ZhihuSQFooter", label: "版权其他", checked: false } 377 | ] 378 | } 379 | ] 380 | }, 381 | } 382 | let asideWidth = '0px' 383 | 384 | // ---------- 通用方法 ------------ 385 | 386 | // 通过当前地址获取现在是那个网站 387 | function initUrl() { 388 | let url = window.location.href 389 | let urlResList = [ 390 | { platform: 'CSDN', reg: /.*blog.csdn.net.*\/details\/.*/, title: 'CSDN详情优化', key: 2 }, 391 | { platform: 'CSDN', reg: /.*blog.csdn.net\/nav.*/, title: 'CSDN文章类型列表优化', key: 3 }, 392 | // { platform: 'CSDN', reg: /.*blog.csdn.net\.*/, title: 'CSDN文章类型推荐优化', key: 3.1 }, 393 | { platform: 'CSDN', reg: /.*so.csdn.net\/.*/, title: 'CSDN搜索页面', key: 4 }, 394 | { platform: 'Juejin', reg: /juejin.cn\/post\/.*/, title: '掘金文章详情', key: 5 }, 395 | { platform: 'Juejin', reg: /juejin.cn\/search\?.*/, title: '掘金搜索页面', key: 7 }, 396 | { platform: 'Juejin', reg: /juejin.cn/, title: '掘金首页', key: 6 }, 397 | { platform: 'SiFou', reg: /segmentfault.com\/q\/.*/, title: '思否问答详情', key: 8 }, 398 | { platform: 'SiFou', reg: /segmentfault.com\/a.*/, title: '思否文章详情', key: 9 }, 399 | { platform: 'ZhiHu', reg: /zhihu.com\/question\/.*/, title: '知乎问答', key: 10 }, 400 | { platform: 'ZhiHu', reg: /zhuanlan.zhihu.com\/p\/.*/, title: '知乎专栏', key: 11 }, 401 | { platform: 'ZhiHu', reg: /.*zhihu.com\/search\.*/, title: '知乎搜索', key: 12 }, 402 | ] 403 | 404 | for (let i = 0; i < urlResList.length; i++) { 405 | if (urlResList[i].reg.test(url)) { 406 | CURRENTPAGES = urlResList[i].key 407 | return urlResList[i] 408 | } 409 | } 410 | } 411 | 412 | // 外链跳转 413 | function jumpLink() { 414 | let url = document.URL 415 | let target_url = '' 416 | let flag = false 417 | 418 | if (/https:\/\/link\.csdn\.net\/.*/.test(url)) { 419 | flag = true 420 | target_url = url.split("target=")[1] 421 | setTimeout(() => { 422 | let github = getElement('.loading-btn-github') 423 | flag = github && github.length !== 0 ? false : true 424 | getElement('.loading-topic span')[0].innerText = flag ? 'Blog-UI 正在跳转到: ' : '当前链接可以使用github加速请自行选择: ' 425 | if (flag) { 426 | target_url = decodeURIComponent(target_url) // 编码 427 | setTimeout(() => { 428 | window.location.href = target_url; 429 | }, 500) 430 | } 431 | }, 500) 432 | } 433 | if (/https:\/\/link\.juejin\.cn\/.*/.test(url) || /https:\/\/link\.zhihu\.com\/.*/.test(url)) { 434 | target_url = url.split("target=")[1] 435 | // setTimeout(() => { getElement('.content .title')[0].innerText = 'Blog-UI 正在跳转到: ' }) 436 | initDialog('body', "Blog-UI 正在跳转") 437 | target_url = decodeURIComponent(target_url) // 编码 438 | setTimeout(() => { 439 | window.location.href = target_url; 440 | }, 500) 441 | } 442 | } 443 | 444 | function addEvent(className, eventType, callback) { 445 | let dom = getElement(className)[0] 446 | dom.addEventListener(eventType, callback) 447 | } 448 | 449 | // 设置缓存更改 配置文件 450 | function generalCetch() { 451 | let parentConfig = BLOGUICONFIG[CURRENTPAGES][ISH5 ? 'h5' : 'pc'] 452 | if (parentConfig.length !== 0) { 453 | // 设置缓存中的内容 并更新 源配置文件 454 | parentConfig.forEach((item) => { 455 | item.children.forEach((childrenItem, index, arr) => { 456 | // 如果没有for 就证明不需要缓存 457 | if (!childrenItem.for) { 458 | return 459 | } 460 | if (GM_listValues().includes(childrenItem.for)) { 461 | arr[index].checked = GM_getValue(childrenItem.for) 462 | } else { 463 | GM_setValue(childrenItem.for, childrenItem.checked) 464 | } 465 | }) 466 | }) 467 | addMain(parentConfig, BLOGUICONFIG[CURRENTPAGES].webType) // 生成虚拟节点 468 | } 469 | } 470 | 471 | // 生成虚拟节点 472 | function addMain(config, type) { 473 | 474 | let parentDom = getElement('.blog-ui-setting')[0] 475 | let parentVDom = render({ 476 | tag: 'div', 477 | prop: { class: "blog-ui-csdn" }, 478 | children: [ 479 | { 480 | tag: 'div', 481 | prop: { class: "blog-ui-csdn-main" }, 482 | } 483 | ] 484 | }) 485 | 486 | parentDom.appendChild(parentVDom) 487 | let itemDom = getElement('.blog-ui-csdn-main')[0] 488 | 489 | config.forEach((configItem, index) => { 490 | let vDom = render({ 491 | tag: 'div', 492 | prop: { class: "blog-ui-item" }, 493 | children: [ 494 | { 495 | tag: 'div', 496 | prop: { class: "blog-ui-config-title" }, 497 | children: configItem.title 498 | }, 499 | { 500 | tag: 'div', 501 | prop: { class: "blog-ui-config-center", parentIndex: index }, 502 | children: actionDom(configItem.children, type) 503 | } 504 | ] 505 | }) 506 | itemDom.appendChild(vDom) 507 | }) 508 | } 509 | 510 | // 操作区 511 | function actionDom(configItem, type) { 512 | let actionDom = [] 513 | for (let i = 0; i < configItem.length; i++) { 514 | let checkObj = null 515 | if (configItem[i].type === 'checked') { 516 | checkObj = checkBox(configItem[i], type) 517 | } else if (configItem[i].type === 'button') { 518 | checkObj = buttonBox(configItem[i]) 519 | } else if (configItem[i].type === 'radio') { 520 | checkObj = radioBox(configItem[i]) 521 | } 522 | actionDom.push(checkObj) 523 | 524 | } 525 | return actionDom 526 | } 527 | 528 | 529 | // 生成多选框 530 | function checkBox(item, type) { 531 | let checkObj = { 532 | tag: "input", 533 | prop: { 534 | "type": "checkbox", 535 | "id": item.for, 536 | "domId": item.domId, 537 | "index": item.index, 538 | "event": item.getEvent, 539 | "on": { 540 | change: (e) => { 541 | var target = e.target, 542 | targetTag = target.tagName; 543 | if (targetTag === "INPUT") { 544 | if (GM_listValues().includes(target.id)) { 545 | GM_setValue(target.id, target.checked) 546 | } 547 | var event = target.getAttribute('event') 548 | event != 'undefined' ? eval(`${event}(${target.checked}, '${target.attributes.domId.value}')`) : setDomEvent(target, type) 549 | } 550 | } 551 | } 552 | } 553 | } 554 | 555 | if (item.checked) { 556 | checkObj.prop.checked = true 557 | } 558 | 559 | let currentDom = { 560 | tag: 'div', 561 | prop: { 562 | "class": "setting-item" 563 | }, 564 | children: [ 565 | checkObj, 566 | { 567 | tag: "label", 568 | prop: { 569 | "class": "form-check-label", 570 | "for": item.for, 571 | "domId": item.domId 572 | }, 573 | children: item.label 574 | } 575 | ] 576 | } 577 | return currentDom 578 | } 579 | 580 | // 生成按钮 581 | function buttonBox(item) { 582 | return { 583 | tag: "button", 584 | prop: { 585 | class: item.class, 586 | "on": { 587 | click: (e) => { 588 | var target = e.target, 589 | targetTag = target.tagName; 590 | if (targetTag == 'BUTTON') { 591 | eval(`${item['getEvent']}`) 592 | } 593 | } 594 | } 595 | }, 596 | children: item.label 597 | } 598 | } 599 | 600 | // 生成单选 601 | function radioBox(item) { 602 | let radio = { 603 | tag: "input", 604 | prop: { 605 | 'type': item.type, 606 | 'name': 'radio', 607 | "id": item.for, 608 | "on": { 609 | change: (e) => { 610 | var target = e.target, 611 | targetTag = target.tagName; 612 | 613 | if (targetTag == 'INPUT') { 614 | eval(`${item['getEvent']}()`) 615 | } 616 | } 617 | } 618 | } 619 | } 620 | 621 | if (item.checked) { 622 | radio.prop.checked = true 623 | } 624 | 625 | let radioVdom = { 626 | tag: 'div', 627 | prop: { 628 | class: 'radio-item' 629 | }, 630 | children: [ 631 | radio, 632 | { 633 | tag: 'span', 634 | prop: { class: 'radio-label' }, 635 | children: item.label 636 | } 637 | ] 638 | } 639 | return radioVdom 640 | } 641 | 642 | // 初始化当前页面配置 643 | function clearCache(plat, key) { 644 | let config = eval(`${plat}[${key}]`) 645 | config[ISH5 ? 'h5' : 'pc'].forEach(item => { 646 | item.children.forEach(detailItem => { 647 | if (detailItem.for && GM_listValues().includes(detailItem.for)) { 648 | GM_deleteValue(detailItem.for) 649 | } 650 | }) 651 | }) 652 | location.reload(); 653 | } 654 | 655 | // 添加主页面 656 | function domHtml(urlObject) { 657 | let DomHtml = 658 | ` 659 |
660 | 661 | 664 | 665 | 666 |
667 |
668 | Blog-UI 设置界面 669 |
${urlObject.title}
670 |
671 |
672 |
673 |
674 | ` 675 | let app = document.createElement('div') 676 | app.setAttribute('id', 'blogUiApp') 677 | document.querySelectorAll('body')[0].appendChild(app) 678 | app.innerHTML = DomHtml 679 | } 680 | 681 | // 获取元素 682 | function getElement(className) { 683 | let domList = document.querySelectorAll(className) 684 | if (!domList || domList.length === 0) { 685 | return '' 686 | } else { 687 | return domList 688 | } 689 | } 690 | 691 | // 初始化一个弹用于消息提示 692 | function initDialog(parentDom, title) { 693 | let oldDialog = getElement('.dialog-dom')[0] 694 | if (oldDialog) { 695 | oldDialog.remove() 696 | } 697 | let dialogVDom = document.createElement('div') 698 | dialogVDom.setAttribute('class', 'dialog-dom') 699 | dialogVDom.innerText = title 700 | setTimeout(() => { 701 | dialogVDom.setAttribute('style', 'opacity: 1; transition: all 1s;') 702 | }, 0) 703 | let parentVDom = getElement(parentDom)[0] 704 | parentVDom.appendChild(dialogVDom) 705 | 706 | setTimeout(() => { 707 | dialogVDom.setAttribute('style', 'opacity: 0; transition: all 1s;') 708 | }, 2000) 709 | } 710 | 711 | // 设置隐藏显示 712 | function displayDom(domNode, type) { 713 | if (!domNode) { 714 | return 715 | } 716 | // 对于一些动态加载的节点 如果没有查到就加入 一个错误队列中 每1000毫秒查找一次 717 | let dom = getElement(domNode) 718 | let errorList = [] 719 | if (dom && dom.length > 0) { 720 | dom.forEach(item => { 721 | item.style['display'] = type ? 'block' : 'none' 722 | }) 723 | } else { 724 | errorList.push({ 725 | domNode, 726 | type 727 | }) 728 | } 729 | 730 | if (errorList.length !== 0) { 731 | let i = 0 732 | let interval = setInterval(() => { 733 | if (i <= 5) { 734 | errorList.forEach(item => { 735 | let errorDom = getElement(domNode) 736 | if (errorDom && errorDom.length > 0) { 737 | errorDom.forEach(item => { 738 | item.style['display'] = type ? 'block' : 'none' 739 | }) 740 | } 741 | }) 742 | i++ 743 | } else { 744 | clearInterval(interval) 745 | } 746 | }, 3000) 747 | } 748 | } 749 | 750 | // 输出 751 | function log(message, type = 'log') { 752 | console[type](message) 753 | } 754 | 755 | // 创建dom 元素 756 | function render(Vnode) { 757 | let { tag, prop, children } = Vnode 758 | let el = document.createElement(tag) 759 | Object.keys(prop).forEach(item => { 760 | el.setAttribute(item, prop[item]); 761 | if (item === 'on') { 762 | let eventObject = prop[item] 763 | Object.keys(eventObject).forEach(eventItem => { 764 | el.addEventListener(eventItem, (e) => eventObject[eventItem](e)) 765 | }) 766 | } 767 | }) 768 | 769 | if (children instanceof Array) { 770 | children.forEach((item) => { 771 | el.appendChild(render(item)); 772 | }); 773 | } else { 774 | el.textContent = children 775 | } 776 | return el 777 | } 778 | 779 | // 设置点击事件 在这里需要进行分发 780 | function setDomEvent(e, type) { 781 | let checkedFlag = e.checked 782 | let domId = e.attributes.domid.value 783 | switch (type) { 784 | case 'CSDN': CSDNEvent(domId, checkedFlag) 785 | case 'JUEJIN': JUEJINEvent(domId, checkedFlag) 786 | case 'SiFou': SiFouEvent(domId, checkedFlag) 787 | case 'ZhiHu': ZhiHuEvent(domId, checkedFlag) 788 | } 789 | } 790 | 791 | // 添加外部样式 792 | function addCss(className, query) { 793 | let dom = getElement(className)[0] 794 | Object.keys(query).forEach(item => { 795 | dom.style[item] = query[item] 796 | }) 797 | } 798 | 799 | // 添加其他内容 800 | function appendDom() { 801 | let html = 802 | ` 803 |
804 |

805 | 806 | 807 | 808 |

809 |

当前版本号: ${VERSION}

810 |
811 |

作者本人也是做前端开发的

812 |

有兴趣的小伙伴可以加百人大群 一起探讨交流

813 |
814 | 815 |

816 | 817 |
818 | 819 |

820 |
821 | 822 |

823 | 824 | 825 |    '差评' 去提交个建议 826 | 827 | 828 | 829 |      '好评' 给作者点个赞 830 | 831 |

832 | 833 |
834 |

广告警告🪧

835 | 836 |

也不算广告啦 也是之前作者写的VScode插件

837 | 838 | 839 | ⬅️ 叫做 'exclusive-translation' 专属翻译 840 |
841 | 🌟可以直接vscode搜索 '百度翻译'安装 可以直接中英翻译🌟 842 |
843 |
844 | 845 |
846 | 如果有问题或者建议可以及时联系群主或者github提issues, 我也很希望大家能提提意见, 我看到后会及时内回复各位, 祝各位使用愉快 847 |
848 | 849 |
850 | 未来版本将要更新的功能:
851 | 1.对CSDN下载资源对优化
852 | 2.添加博客园 掘金 知乎 简书 思否 等技术论坛等优化
853 | 3.可以对文章主要部分进行打印 PDF 获取
854 | 4.目前只想到这些吧 其他的 想起来在写 855 |
856 |
857 |
858 | ` 859 | let parentDom = getElement('.blog-ui-csdn')[0] 860 | let createDom = document.createElement('div') 861 | createDom.innerHTML = html 862 | parentDom.appendChild(createDom) 863 | } 864 | 865 | function initMainEvent() { 866 | 867 | 868 | addEvent('#blog-ui-main', 'click', (e) => { 869 | console.log(123) 870 | addCss('#blog-main', { display: 'inherit' }) 871 | if (getElement('.bscroll-vertical-scrollbar').length !== 0) { 872 | getElement('.bscroll-vertical-scrollbar')[0].remove() 873 | } 874 | getElement('.blog-ui-csdn')[0].style.transform = 'translateX(0px) translateY(0px) translateZ(1px)' 875 | }) 876 | 877 | 878 | // 设置鼠标移入svg 显示主菜单 879 | addEvent('#blog-ui-main', 'mouseenter', (e) => { 880 | console.log(0) 881 | addCss('#blog-main', { display: 'inherit' }) 882 | if (getElement('.bscroll-vertical-scrollbar').length !== 0) { 883 | getElement('.bscroll-vertical-scrollbar')[0].remove() 884 | } 885 | getElement('.blog-ui-csdn')[0].style.transform = 'translateX(0px) translateY(0px) translateZ(1px)' 886 | }) 887 | 888 | addEvent('#blog-main', 'mouseleave', () => { 889 | addCss('#blog-main', { display: 'none' }) 890 | }) 891 | 892 | var screen_width = document.body.offsetWidth; 893 | var screen_height = window.innerHeight; 894 | 895 | let father = getElement('#blogUiApp')[0] 896 | 897 | if (GM_getValue('x')) { 898 | father.style.top = GM_getValue('y') 899 | father.style.left = GM_getValue('x') 900 | } 901 | 902 | addEvent('#blog-ui-main', 'mousedown', (e) => { 903 | var x = e.pageX - father.offsetLeft 904 | var y = e.pageY - father.offsetTop 905 | function move(e) { 906 | let Py = e.pageY - y 907 | let Px = e.pageX - x 908 | father.style.top = Py + 'px' 909 | father.style.left = Px + 'px' 910 | 911 | if (Py < 20) { 912 | father.style.top = 20 + 'px' 913 | } else if (Py > (screen_height - 50)) { 914 | father.style.top = screen_height - 50 + 'px' 915 | } 916 | 917 | if (Px < 5) { 918 | father.style.left = 5 + 'px' 919 | } else if (Px > (screen_width - 50)) { 920 | father.style.left = screen_width - 50 + 'px' 921 | getElement('#blog-ui-main')[0].style.reight = '5px' 922 | } 923 | 924 | GM_setValue('x', father.style.left) 925 | GM_setValue('y', father.style.top) 926 | } 927 | document.addEventListener('mousemove', move) 928 | document.addEventListener('mouseup', function () { 929 | document.removeEventListener('mousemove', move) 930 | }) 931 | }) 932 | 933 | addEvent('#blog-ui-main', 'touchstart', (e) => { 934 | var x = e.changedTouches[0].pageX - father.offsetLeft 935 | var y = e.changedTouches[0].pageY - father.offsetTop 936 | function move(e) { 937 | let Py = e.changedTouches[0].pageY - y 938 | let Px = e.changedTouches[0].pageX - x 939 | father.style.top = Py + 'px' 940 | father.style.left = Px + 'px' 941 | 942 | if (Py < 20) { 943 | father.style.top = 20 + 'px' 944 | } else if (Py > (screen_height - 50)) { 945 | father.style.top = screen_height - 50 + 'px' 946 | } 947 | 948 | if (Px < 5) { 949 | father.style.left = 5 + 'px' 950 | } else if (Px > (screen_width - 50)) { 951 | father.style.left = screen_width - 50 + 'px' 952 | getElement('#blog-ui-main')[0].style.reight = '5px' 953 | } 954 | 955 | GM_setValue('x', father.style.left) 956 | GM_setValue('y', father.style.top) 957 | } 958 | 959 | document.addEventListener('touchmove', move) 960 | document.addEventListener('touchend', function () { 961 | document.removeEventListener('touchmove', move) 962 | }) 963 | }) 964 | } 965 | 966 | // ----------- CSDN 专区 ---------- 967 | function csdnDirectory(checkedFlag, domId) { 968 | CSDNEvent(domId, checkedFlag) 969 | if (checkedFlag && domId) { 970 | csdnSetMenuHeight(flag = true) 971 | } 972 | } 973 | 974 | function csdnSetMenuHeight(flag = false) { 975 | setTimeout(() => { 976 | let asidedirectory = getElement('#asidedirectory')[0] 977 | if (asidedirectory) { 978 | let blog_container_aside = Array.from(getElement('.blog_container_aside')[0].children) 979 | let height = 0 980 | blog_container_aside.forEach((item) => { 981 | height += item.offsetHeight 982 | }) 983 | height = height - asidedirectory.offsetHeight 984 | GM_setValue('CSDNMenuHeight', height) 985 | let CSDNMenuHeight = GM_getValue("CSDNMenuHeight") 986 | csdnScrollMenu(asidedirectory, CSDNMenuHeight) 987 | window.onscroll = (e) => { 988 | csdnScrollMenu(asidedirectory, CSDNMenuHeight) 989 | } 990 | 991 | } 992 | }, 1000) 993 | } 994 | 995 | function csdnScrollMenu(asidedirectory, CSDNMenuHeight) { 996 | let scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop 997 | if (scrollTop > CSDNMenuHeight) { 998 | asidedirectory.classList.add('default-menu') 999 | } else { 1000 | asidedirectory.classList.remove('default-menu') 1001 | } 1002 | } 1003 | 1004 | function csdnRadioP() { 1005 | GM_setValue('CsdnRadioC', false) 1006 | GM_setValue('CsdnRadioP', true) 1007 | 1008 | getElement('.main_father')[0].style = `height: 100%; width: 97vw; justify-content: unset;` 1009 | getElement('.container')[0].style = `display: flex;width: 97vw;` 1010 | } 1011 | 1012 | function csdnRadioC() { 1013 | GM_setValue('CsdnRadioP', false) 1014 | GM_setValue('CsdnRadioC', true) 1015 | 1016 | getElement('.main_father')[0].style = `height: 100%; width: 97vw; justify-content: center;` 1017 | getElement('.container')[0].style = `display: flex;` 1018 | } 1019 | 1020 | 1021 | function CSDNIsH5OrPC(id) { 1022 | // h5 移动端端时候的主元素ID 1023 | let dom = getElement(id) 1024 | if (dom && dom.length > 0) { 1025 | return true 1026 | } else { 1027 | return false 1028 | } 1029 | } 1030 | 1031 | // csdn 点击操作区部分触发的事件 1032 | function CSDNEvent(domId, checked) { 1033 | displayDom(domId, checked); 1034 | (!ISH5 && CURRENTPAGES == 2) ? setAside() : '' // 点击之后进行判断是不是没有右侧的侧边栏了 1035 | window.onscroll = null 1036 | csdnSetMenuHeight() 1037 | } 1038 | 1039 | // -------- csdn 通用 --------- 1040 | // 处理顶部 1041 | function removeTopbar(checked) { 1042 | setTimeout(() => { 1043 | // 处理左侧 1044 | getElement('.toolbar-menus li').forEach(item => { 1045 | let dataType = item.getAttribute('title') 1046 | if (['高价值源码课程分享', '简单高效优惠的云服务', '程序员的如意兵器', '找到志同道合的伙伴', '系统学习·问答·比赛', '开源代码托管', '让你的灵感立即落地'].includes(dataType)) { 1047 | item.style.display = checked ? 'inline-block' : 'none' 1048 | } 1049 | }) 1050 | 1051 | // 判断是否登录 1052 | let loginDom = getElement('.toolbar-btn-loginfun') 1053 | // 已经登录 1054 | if (!loginDom) { 1055 | return 1056 | } 1057 | 1058 | // 删除顶部右侧 1059 | ['.toolbar-btn-vip', '.toolbar-btn-collect', '.toolbar-dynamic-box', '.toolbar-mp-menubox', '.toolbar-btn-write', '.toolbar-advert', '.toolbar-btn-mp', '.toolbar-btn-msg'].forEach(item => { 1060 | displayDom(item, checked) 1061 | }) 1062 | }, 500) 1063 | } 1064 | 1065 | function whiteBack(checked) { 1066 | if (checked) { 1067 | getElement('body')[0].classList.add('bodyWhite') 1068 | } else { 1069 | getElement('body')[0].classList.remove('bodyWhite') 1070 | } 1071 | } 1072 | 1073 | // 优化开始 1074 | function CSDNOoptimiz(key) { 1075 | if (!ISH5) { 1076 | let removeDom = ['#recommendNps', '.template-box', '.blog-footer-bottom', '#csdn-copyright-footer'] 1077 | // 删除可以直接通类名进行获取的元素 1078 | removeDom.forEach(item => { 1079 | displayDom(item, false) 1080 | }) 1081 | } 1082 | 1083 | // getElement('.passport-login-container')[0].style.display = 'none' 1084 | 1085 | 1086 | // 点击登录注册按钮进行展示登录页面 1087 | let loginShow = ['.toolbar-btn-login', '.unlogin-comment-bt'] 1088 | loginShow.forEach(item => { 1089 | let loginDom = getElement(item) 1090 | loginDom && loginDom.length != 0 && loginDom[0].addEventListener('click', () => { 1091 | setTimeout(() => { getElement('.passport-login-container')[0].style.display = 'block' }, 500) 1092 | }) 1093 | }) 1094 | 1095 | if (key === 2) { 1096 | // 解除点击全选 1097 | let hljdButton = getElement(".hljs-button") 1098 | if (hljdButton && hljdButton.length !== 0) { 1099 | hljdButton.forEach(item => { 1100 | item.setAttribute('data-title', '免登录复制') 1101 | item.addEventListener('click', (event) => { 1102 | const parentPreBlock = event.target.closest("pre"); 1103 | let code = parentPreBlock.querySelectorAll('code')[0] 1104 | navigator.clipboard.writeText(code.innerText) 1105 | item.setAttribute('data-title', '复制成功') 1106 | setTimeout(() => { item.setAttribute('data-title', '免登录复制') }, 3000) 1107 | }) 1108 | }) 1109 | } 1110 | 1111 | // 复制 1112 | getElement('#content_views')[0].oncopy = function(event) { 1113 | const selection = document.getSelection() 1114 | event.clipboardData.setData("text/plain", selection.toString()) 1115 | event.preventDefault() 1116 | } 1117 | 1118 | // 展开code 折叠 1119 | document.querySelectorAll('.hide-preCode-bt').forEach(item => { item.click() }) 1120 | ISH5 ? csdnDeatilH5() : csdnDeatilPc() 1121 | } 1122 | } 1123 | 1124 | // -----------详情页面处理方法------ 1125 | // 判断右侧 的 侧边栏是不是全都有display:none 如果有就进行全屏显示 1126 | function setAside() { 1127 | let blog_container_aside = getElement('.blog_container_aside')[0] 1128 | setTimeout(() => { 1129 | let domList = [] 1130 | getElement('.blog_container_aside .aside-box').forEach(item => { 1131 | domList.push(item.style.display) 1132 | }) 1133 | 1134 | if (domList.filter(item => { 1135 | return item == 'block' 1136 | }).length == 0) { 1137 | asideWidth = '0px' 1138 | } else { 1139 | asideWidth = '300px' 1140 | } 1141 | blog_container_aside.style.width = asideWidth 1142 | }) 1143 | } 1144 | 1145 | // 处理左侧悬浮 1146 | function removeSideToolbar(checked) { 1147 | setTimeout(() => { 1148 | // 删除侧边悬浮 1149 | getElement('.csdn-side-toolbar')[0].style = '' 1150 | getElement('.csdn-side-toolbar .option-box').forEach(item => { 1151 | let dataType = item.getAttribute('data-type') 1152 | if (['search', 'guide', 'cs'].includes(dataType)) { 1153 | item.style.display = checked ? 'flex' : 'none' 1154 | } 1155 | if (['show', 'hide'].includes(dataType)) { 1156 | item.remove() 1157 | } 1158 | }) 1159 | 1160 | displayDom('.sidetool-writeguide-box', false) 1161 | displayDom('.btn-sidetool-writeguide', false) 1162 | displayDom('.btn-side-chatdoc-contentbox', false) 1163 | getElement('.tip-box')[0].remove() 1164 | }, 1000) 1165 | } 1166 | 1167 | // operate 底部操作是否固定 1168 | function operate(checked) { 1169 | let operateDom = getElement('#operate') 1170 | if (operateDom && operateDom.length !== 0) { 1171 | setTimeout(() => { 1172 | operateDom[0].style.bottom = '0px' 1173 | operateDom[0].style.position = checked ? 'fixed' : 'inherit' 1174 | }) 1175 | } 1176 | } 1177 | 1178 | // 详情页面处理H5 1179 | function csdnDeatilH5() { 1180 | // let loginDom = getElement('.passport-login-container') 1181 | let recommendList = getElement('.container-fluid') 1182 | recommendList.forEach(item => { 1183 | item.addEventListener('click', (e) => { 1184 | e.stopPropagation() 1185 | window.open(e.currentTarget.attributes['data-url'].nodeValue) 1186 | }) 1187 | }) 1188 | 1189 | let readall_box = getElement('.readall_box') 1190 | if (readall_box) { 1191 | readall_box[0].remove() 1192 | getElement('.article_content')[0].style.height = 'inherit' 1193 | } 1194 | } 1195 | 1196 | // 详情页面处理PC 1197 | function csdnDeatilPc() { 1198 | // (!ISH5 && CURRENTPAGES == 2) ? setAside() : '' // 点击之后进行判断是不是没有右侧的侧边栏了 1199 | 1200 | let mainDom = getElement('.main_father')[0] 1201 | mainDom.classList.remove('justify-content-center') 1202 | addCss('main', { 1203 | "flex": "1", 1204 | "margin-right": "10px" 1205 | }) 1206 | 1207 | // 设置右侧边栏 1208 | let blog_container_aside = getElement('.blog_container_aside')[0] 1209 | var observe = new MutationObserver((list) => { 1210 | blog_container_aside.style['position'] = 'relative' 1211 | blog_container_aside.style['left'] = '0' 1212 | blog_container_aside.style['width'] = asideWidth 1213 | }) 1214 | observe.observe(blog_container_aside, { attributes: true }); 1215 | 1216 | // 设置底部关注一栏 1217 | let toolbar = getElement('.left-toolbox')[0] 1218 | toolbar.classList.add('observeToolbar') 1219 | 1220 | let observeToolbar = new MutationObserver((list) => { 1221 | list.forEach(item => { 1222 | item.target.classList.add('observeToolbar') 1223 | observeToolbar.disconnect(); 1224 | }) 1225 | }) 1226 | observeToolbar.observe(toolbar, { attributes: true }) 1227 | 1228 | // 去除剪贴板劫持 1229 | csdn.copyright.init("", "", ""); 1230 | 1231 | // 删除原始的右侧 1232 | let rightDom = getElement('.recommend-right') 1233 | rightDom && rightDom[0].remove() 1234 | 1235 | // 关注博主才能查看 1236 | let focusUP = getElement('.hide-article-box') 1237 | if (focusUP && focusUP.length !== 0) { 1238 | focusUP[0].remove() 1239 | getElement('#article_content')[0].style.height = 'inherit' 1240 | } 1241 | setTimeout(() => { 1242 | setAside() // 判断右侧是否有悬浮 1243 | }, 1000) 1244 | } 1245 | 1246 | // ------处理搜索列表--------- 1247 | // 列表页是否平铺展示 1248 | function blogNav(checked) { 1249 | 1250 | if (checked) { 1251 | getElement('.home_wrap')[0].style.width = '95vw' 1252 | getElement('.blog-content')[0].style.width = '75vw' 1253 | } else { 1254 | getElement('.home_wrap')[0].style.width = '70vw' 1255 | getElement('.blog-content')[0].style.width = '50vw' 1256 | } 1257 | } 1258 | 1259 | function soPc(checked) { 1260 | setTimeout(() => { 1261 | let mainDom = getElement('.clearfix')[0] 1262 | checked ? mainDom.classList.remove('main') : mainDom.setAttribute('class', 'main clearfix') 1263 | }, 100) 1264 | } 1265 | 1266 | // ------- 掘金专区 --------- 1267 | function JUEJINEvent(domId, checked) { 1268 | displayDom(domId, checked); 1269 | } 1270 | 1271 | function juejinRadioC() { 1272 | GM_setValue('JuejinRadioC', true) 1273 | GM_setValue('JuejinRadioP', false) 1274 | setTimeout(() => { 1275 | let dom = getElement('.main-container')[0] 1276 | dom.setAttribute('style', `max-width: ${1200}px`) 1277 | let main = getElement('.main-area')[0] 1278 | main.style.width = '890px' 1279 | }, 100) 1280 | } 1281 | 1282 | function juejinRadioP() { 1283 | GM_setValue('JuejinRadioP', true) 1284 | GM_setValue('JuejinRadioC', false) 1285 | // window.onload = () => { 1286 | setTimeout(() => { 1287 | let dom = getElement('.main-container')[0] 1288 | dom.setAttribute('style', `max-width: ${1140}px`) 1289 | let main = getElement('.main-area')[0] 1290 | main.style.width = '820px' 1291 | }) 1292 | // } 1293 | } 1294 | 1295 | function delayFunction(time, domStr) { 1296 | let delay = new Promise((resolve, reject) => { 1297 | let startTime = new Date().valueOf() 1298 | let endTime = startTime + time * 1000 1299 | let inter = setInterval(() => { 1300 | let dom = getElement(domStr) 1301 | if (new Date().valueOf() < endTime && (dom && dom.length !== 0)) { 1302 | clearInterval(inter) 1303 | resolve(dom[0]) 1304 | } else if (new Date().valueOf() > endTime) { 1305 | clearInterval(inter) 1306 | reject() 1307 | } 1308 | }, 100); 1309 | }) 1310 | return delay 1311 | } 1312 | 1313 | 1314 | // 相关搜索 1315 | function JuejinRelated(checked) { 1316 | delayFunction(3, '.related-entry-sidebar-block').then(res => { 1317 | if (!checked) { 1318 | res.style.top = '-1000px' 1319 | res.style.position = 'absolute' 1320 | } else { 1321 | res.style.top = '' 1322 | res.style.position = 'relative' 1323 | } 1324 | }).catch((error) => { 1325 | console.log('DOM 元素未找到') 1326 | }) 1327 | } 1328 | 1329 | // 目录 1330 | function JuejinGetMenu(checked) { 1331 | if (checked) { 1332 | displayDom('.article-catalog', true) 1333 | delayFunction(3, '.sidebar').then(res => { 1334 | var scroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; 1335 | let offsetHeight = res.offsetHeight 1336 | let dom = getElement('.sticky-block-box')[0] 1337 | if (scroll + offsetHeight > offsetHeight) { 1338 | dom.style.position = 'fixed' 1339 | } else { 1340 | dom.style.position = 'initial' 1341 | } 1342 | 1343 | window.onscroll = (e) => { 1344 | let scroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; 1345 | let offsetHeight = res.offsetHeight 1346 | let dom = getElement('.sticky-block-box')[0] 1347 | 1348 | if (scroll > offsetHeight) { 1349 | dom.style.position = 'fixed' 1350 | } else { 1351 | dom.style.position = 'initial' 1352 | } 1353 | } 1354 | }) 1355 | } else { 1356 | displayDom('.article-catalog', false) 1357 | } 1358 | } 1359 | 1360 | function JuejinOptimiz() { 1361 | 1362 | document.oncopy = event => event.clipboardData.setData('text', window.getSelection(0).toString()); 1363 | 1364 | setTimeout(() => { getElement('.article-suspended-panel .tooltip .panel-btn')[0].remove() }, 500) 1365 | 1366 | // 没有登陆的时候 顶部的处理 1367 | let noLoginDisplay = ['.creator-item', '.vip-entry'] 1368 | let isLogin = getElement('.login-button')[0] 1369 | noLoginDisplay.forEach(item => { 1370 | if (isLogin) { 1371 | getElement(item)[0].style.display = 'none' 1372 | } 1373 | }) 1374 | 1375 | displayDom('.sidebar-bd-entry', false) 1376 | displayDom('.banner', false) 1377 | } 1378 | 1379 | // 掘金顶部数据处理 1380 | function JuejinTop(checked) { 1381 | let topList = getElement('.phone-hide .nav-item') 1382 | topList.forEach((item, index) => { 1383 | if (index != 0) { 1384 | if (item.getAttribute('tag') == 'li') { 1385 | item.style.display = checked ? 'flex' : 'none' 1386 | } else { 1387 | item.style.display = checked ? 'block' : 'none' 1388 | } 1389 | } 1390 | }) 1391 | } 1392 | 1393 | // 思否点击处理事件 1394 | function SiFouEvent(domId, checked) { 1395 | displayDom(domId, checked); 1396 | } 1397 | 1398 | // 删除顶部 1399 | function removeSifouTopbar(checked) { 1400 | getElement('.navbar-nav')[0].style.display = checked ? 'flex' : 'none' 1401 | } 1402 | 1403 | function SiFouRadioC() { 1404 | GM_setValue('SiFouRadioC', true) 1405 | GM_setValue('SiFouRadioP', false) 1406 | let DQDom = getElement('#question-wrap')[0] || getElement('.article-content')[0] 1407 | DQDom.style = `max-width: auto` 1408 | } 1409 | 1410 | function SiFouRadioP() { 1411 | GM_setValue('SiFouRadioC', false) 1412 | GM_setValue('SiFouRadioP', true) 1413 | let DQDom = getElement('#question-wrap')[0] || getElement('.article-content')[0] 1414 | DQDom.style = `max-width: 90%;` 1415 | } 1416 | 1417 | function similarRead(checked) { 1418 | setTimeout(() => { 1419 | getElement('#comment-area')[0].parentElement.nextElementSibling.style.display = checked ? 'block' : 'none' 1420 | // console.log(getElement('#comment-area')) 1421 | }, 500) 1422 | } 1423 | 1424 | function similarPro(checked) { 1425 | setTimeout(() => { 1426 | getElement('#answer-question')[0].nextElementSibling.style.display = checked ? 'block' : 'none' 1427 | }, 500) 1428 | } 1429 | 1430 | function getOnileUser() { 1431 | setTimeout(() => { 1432 | let parentDom = getElement('.blog-ui-csdn-main')[0] 1433 | let script1 = document.createElement('script') 1434 | let script2 = document.createElement('script') 1435 | script1.setAttribute('id', '_wauwd4') 1436 | script1.innerHTML = 'var _wau = _wau || []; _wau.push(["dynamic", "g24ioigmiv", "wd4", "c4302bffffff", "small"]);' 1437 | script2.setAttribute('async', true) 1438 | script2.setAttribute('src', '//waust.at/d.js') 1439 | parentDom.appendChild(script1) 1440 | parentDom.appendChild(script2) 1441 | }, 2000) 1442 | } 1443 | 1444 | 1445 | // 知乎专区 1446 | function ZhiHuEvent(domId, checked) { 1447 | displayDom(domId, checked); 1448 | 1449 | } 1450 | 1451 | function ZhihuOptimiz() { 1452 | setTimeout(() => { 1453 | let loginDom = getElement('.Modal-wrapper') 1454 | if (loginDom) { 1455 | let button = getElement('.Modal-closeButton')[0] 1456 | button.click() 1457 | } 1458 | }, 1000) 1459 | displayDom('.Banner-link', false) 1460 | 1461 | setInterval(() => { 1462 | displayDom('.css-1ynzxqw', false) 1463 | displayDom('.css-1hwwfws', false) 1464 | displayDom('.Banner-link', false) 1465 | }, 3000) 1466 | 1467 | displayDom('.AppBanner', false) 1468 | 1469 | let dateCreate = document.createElement('div') 1470 | let parentDom = getElement('.QuestionHeader .QuestionHeader-main')[0] 1471 | // let time = document.getAttribute('itemprop', 'dateCreated') 1472 | let time = document.querySelector('meta[itemprop="dateCreated"]') 1473 | if(time) { 1474 | // debugger 1475 | let content = time.getAttribute('content') 1476 | let insertTime = new Date(content).toLocaleString() 1477 | dateCreate.innerHTML = '提问时间:' + insertTime.replaceAll('/', '-') 1478 | dateCreate.setAttribute('class', 'ContentItem-time') 1479 | parentDom.appendChild(dateCreate) 1480 | } 1481 | 1482 | } 1483 | 1484 | function ZhiHuRadioP() { 1485 | GM_setValue('ZhiHuC', false) 1486 | GM_setValue('ZhiHuP', true) 1487 | setTimeout(() => { 1488 | ['.ContentItem-time', '.Post-Header', '.Post-RichTextContainer', '.Post-topicsAndReviewer', 'div[data-za-detail-view-path-module=CommentList]', '.Post-topicsAndReviewer+div'].forEach(item => { 1489 | getElement(item)[0].setAttribute('style', 'width: 1200px') 1490 | }) 1491 | getElement('.Post-SideActions')[0].setAttribute('style', 'right:calc(50vw - 795px)') 1492 | }, 100) 1493 | } 1494 | 1495 | function ZhiHuRadioC() { 1496 | GM_setValue('ZhiHuC', true) 1497 | GM_setValue('ZhiHuP', false) 1498 | setTimeout(() => { 1499 | ['.ContentItem-time', '.Post-Header', '.Post-RichTextContainer', '.Post-topicsAndReviewer', 'div[data-za-detail-view-path-module=CommentList]', '.Post-topicsAndReviewer+div'].forEach(item => { 1500 | getElement(item)[0].setAttribute('style', 'width: 690px') 1501 | }) 1502 | getElement('.Post-SideActions')[0].setAttribute('style', 'right:calc(50vw - 495px)') 1503 | 1504 | }, 100) 1505 | 1506 | } 1507 | // -------- 主函数 ------------- 1508 | function mainInit() { 1509 | // 获取url地址 判断是那个网站 1510 | let urlObject = initUrl() 1511 | jumpLink() 1512 | 1513 | if (!urlObject) { 1514 | return 1515 | } 1516 | 1517 | // 不同平台是不是H5 1518 | switch (urlObject.platform) { 1519 | case 'CSDN': ISH5 = CSDNIsH5OrPC('.csdn-toolbar'); break; 1520 | // case 'ZhiHu': ISH5 = ZhihuIsH5OrPC('') 1521 | default: ISH5 = false 1522 | } 1523 | log(CURRENTPAGES) 1524 | if (CURRENTPAGES && !BLOGUICONFIG[CURRENTPAGES][ISH5 ? 'h5' : 'pc']) { 1525 | log(`当前页面无优化,如果需要请联系作者`) 1526 | return 1527 | } 1528 | // 生成主窗口 1529 | domHtml(urlObject) 1530 | generalCetch() 1531 | 1532 | 1533 | // 进行刷新这之后的设置 1534 | BLOGUICONFIG[CURRENTPAGES][ISH5 ? 'h5' : 'pc'].forEach(configItem => { 1535 | configItem.children.forEach(item => { 1536 | 1537 | // 如果有事件那就去单独执行 否则就是 默认隐藏 1538 | if (item.getEvent && !['button'].includes(item.type)) { 1539 | if (item.type === 'radio' && !item.checked) { 1540 | return 1541 | } else { 1542 | eval(`${item.getEvent}(${item.checked}, '${item.domId}')`) 1543 | } 1544 | } else { 1545 | setTimeout(() => { 1546 | displayDom(item.domId, item.checked) 1547 | }, 500) 1548 | } 1549 | }) 1550 | }) 1551 | 1552 | switch (urlObject.platform) { 1553 | case 'CSDN': CSDNOoptimiz(urlObject.key); break; 1554 | case 'Juejin': JuejinOptimiz(urlObject.key); break; 1555 | case 'ZhiHu': ZhihuOptimiz(urlObject.key); break; 1556 | } 1557 | // 生成附加信息 1558 | appendDom() 1559 | initMainEvent() 1560 | // getOnileUser() 1561 | 1562 | log(`当前正在优化 ${urlObject.title} 使用愉快!有问题请联系作者`) 1563 | 1564 | } 1565 | 1566 | log(`脚本启动成功, 欢迎使用${TITLE} 版本:${VERSION}`) 1567 | 1568 | // window.onload = () => { 1569 | mainInit() 1570 | 1571 | })(); 1572 | --------------------------------------------------------------------------------