1<!doctype html> 2<html 3 lang="en" 4> 5 <head> 6 <title>åé¾-Disue · è¿ªç´ </title> 7 8 <meta charset="utf-8" /> 9 <meta name="renderer" content="webkit" /> 10 11 <meta name="format-detection" content="telephone=no" /> 12 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 13 <meta http-equiv="Cache-Control" content="no-siteapp" /> 14 <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" /> 15 <meta 16 name="viewport" 17 content="width=device-width, user-scalable=no, initial-scale=1.0, shrink-to-fit=no, viewport-fit=cover" 18 /> 19 20 <meta http-equiv="x-dns-prefetch-control" content="on" /> 21 <meta name="site" content="https://disue.com" /> 22 <!-- OG --> 23 <meta property="og:image" content="/upload/favicon.png" /> 24 <meta property="og:description" content="site.seo.description" /> 25 <meta property="og:type" content="website" /> 26 <meta property="og:locale" content="zh_CN" /> 27 <meta property="og:site_name" content="Disue · è¿ªç´ -Dynamic Internet Security Utility Engine" /> 28 <meta property="og:url" content="https://disue.com" /> 29 <meta property="og:title" content="åé¾-Disue · è¿ªç´ " /> 30 <meta property="twitter:partner" content="ogwp" /> 31 <!-- /OG --> 32 33 34 35
35<script id="theme-config-getter"> 36 const ThemeConfig = { 37 theme_mode: "user", 38 enable_loading_bar: true, 39 enable_footer: true, 40 footer_position: "none", 41 check_baidu_collect: false, 42 baidu_token: "", 43 enable_back2top: true, 44 enable_back2top_smooth: true, 45 enable_weather: false, 46 weather_key: "", 47 link_behavior: "current", 48 enable_tag_cloud: true, 49 tag_cloud_type: document.getElementById('tags-3d') ? '3d' : 'list', 50 enable_fixed_header: true, 51 enable_clean_mode: false, 52 cursor_effect: "off", 53 enable_offscreen_tip: false, 54 enable_birthday: false, 55 birthday: "2021\/11\/11 06:30", 56 light_time_scope: "5:00~19:00", 57 enable_console_theme: false, 58 version: "1.4.0", 59 60 enable_big_banner: false, 61 enable_banner: false, 62 banner_direction: "horizontal", 63 enable_banner_loop: true, 64 banner_effect: "slide", 65 banner_speed: 500, 66 enable_banner_handle: true, 67 enable_banner_autoplay: true, 68 banner_delay: "3500", 69 enable_banner_switch_button: true, 70 enable_banner_pagination: true, 71 enable_index_list_ajax: false, 72 post_index_page_size: false, 73 backdrop: "off", 74 favicon: "\/upload\/favicon.png", 75 enable_index_list_effect: true, 76 index_list_effect_class: "fadeInUp", 77 show_loaded_time: false, 78 enable_debug: false, 79 access_key: false, 80 enable_copy: true, 81 enable_share: true, 82 enable_share_link: true, 83 enable_share_weixin: true, 84 enable_like: true, 85 enable_toc: true, 86 enable_progress_bar: true, 87 enable_code_expander: false, 88 enable_fold_long_code: false, 89 enable_comment: true, 90 toc_depth: "0", 91 enable_code_title: true, 92 enable_code_hr: true, 93 enable_code_macdot: true, 94 enable_code_line_number: false, 95 enable_code_newline: false, 96 show_tools_when_hover: true, 97 enable_code_copy: true, 98 enable_copy_right_text: false, 99 copy_right_text: "", 100 offscreen_title_leave: "\u6B6A\uFF0C\u4F60\u53BB\u54EA\u91CC\u4E86\uFF1F", 101 offscreen_title_back: "(\u3064\u30A7\u2282)\u54A6\uFF0C\u53C8\u56DE\u6765\u4E86!", 102 enable_journal_effect: true, 103 enable_friend_effect: true, 104 // prettier-ignore 105 journal_list_effect_class: "fadeInUp", 106 friend_list_effect_class: "fadeInUp", 107 enable_like_journal: true, 108 enable_comment_journal: true, 109 journal_block_height: "300", 110 long_code_height: "800", 111 lazyload_avatar: "\/upload\/photo_2025-09-26_13-23-33.jpg", 112 photos_layout: 'waterfall', 113 // prettier-ignore 114 blog_url: "https:\/\/disue.com", 115 blog_title: "Disue \u00B7 \u8FEA\u7D20", 116 // prettier-ignore 117 BASE_RES_URL: "\/themes\/theme-Joe3", 118 BASE_URL: 'https://bbchin.com', 119 }; 120 //转æ°å 121 ThemeConfig.banner_speed = parseInt(ThemeConfig.banner_speed); 122 ThemeConfig.banner_delay = parseInt(ThemeConfig.banner_delay); 123 ThemeConfig.toc_depth = parseInt(ThemeConfig.toc_depth); 124 ThemeConfig.journal_block_height = parseInt(ThemeConfig.journal_block_height); 125 ThemeConfig.long_code_height = parseInt(ThemeConfig.long_code_height); 126 ThemeConfig.photos_gap = 10; 127 ThemeConfig.enable_photos_effect = true; 128 </script>
128 129 130 131 132
132<script id="compatiable-checker"> 133 // å ¼å®¹æ§æ£æ¥ 134 function detectIE() { 135 var n = window.navigator.userAgent, 136 e = n.indexOf('MSIE '); 137 if (e > 0) { 138 return parseInt(n.substring(e + 5, n.indexOf('.', e)), 10); 139 } 140 if (n.indexOf('Trident/') > 0) { 141 var r = n.indexOf('rv:'); 142 return parseInt(n.substring(r + 3, n.indexOf('.', r)), 10); 143 } 144 var i = n.indexOf('Edge/'); 145 return i > 0 && parseInt(n.substring(i + 5, n.indexOf('.', i)), 10); 146 } 147 detectIE() && 148 (alert('å½åç«ç¹ä¸æ¯æIEæµè§å¨ææ¨å¼å¯äºå ¼å®¹æ¨¡å¼ï¼è¯·ä½¿ç¨å ¶ä»æµè§å¨è®¿é®æå ³éå ¼å®¹æ¨¡å¼ã'), 149 (location.href = 'https://www.baidu.com')); 150 </script>
150 151 152
152<script id="theme-config-getter" type="text/javascript"> 153 if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') { 154 ThemeConfig['mode'] = 'development'; 155 console.log(ThemeConfig.mode); 156 } 157 158 if (ThemeConfig.mode === 'development') { 159 console.log('Joe3主é¢é ç½®ï¼', ThemeConfig); 160 console.log('èµæºæ ¹è·¯å¾ï¼', ThemeConfig.BASE_RES_URL); 161 } 162 // 读å䏻颿¨¡å¼ 163 var initThemeMode = function () { 164 try { 165 var curMode = ''; 166 if (ThemeConfig.theme_mode === 'auto') { 167 var light_scope = ThemeConfig.light_time_scope.split('~'); 168 var now = new Date(); 169 var today = now.toLocaleString().split(' ')[0]; 170 var curMode = 171 now >= new Date(today + ' ' + light_scope[0]) && 172 now <= new Date(today + ' ' + light_scope[1]) 173 ? 'light' 174 : 'dark'; 175 localStorage.removeItem('data-mode'); 176 } else if (ThemeConfig.theme_mode === 'user') { 177 // ç¨æ·æ¨¡å¼ä¸ä¼å 仿¬å°å䏻颿¨¡å¼ï¼é»è®¤ä¸ºæµ è² 178 curMode = localStorage.getItem('data-mode') || 'light'; 179 localStorage.setItem('data-mode', curMode); 180 } else { 181 // éç¨æ·æ¨¡å¼ä¸ç´æ¥ååå°é ç½®çæ¨¡å¼ 182 curMode = ThemeConfig.theme_mode; 183 localStorage.removeItem('data-mode'); 184 } 185 document.querySelector('html').setAttribute('data-mode', curMode); 186 } catch (e) { 187 console.log(e); 188 } 189 }; 190 initThemeMode(); 191 window.Joe = { 192 BASE_API: '', 193 isMobile: /windows phone|iphone|android/gi.test(window.navigator.userAgent), 194 bloggerGenerateAvatarOpts: (function () { 195 let generateAvatarOpts = {}; 196 let generate_avatar_opts_str = '{bgColor:'',textColor:'',useTextGradient:false}'; 197 if (generate_avatar_opts_str) { 198 // generate_avatar_opts_str 示ä¾ï¼{bgColor:'',textColor:'',useTextGradient:false}, è§£æ generate_avatar_opts é ç½® 199 try { 200 // 鲿¢ ' çç¹æ®åç¬¦å¯¼è´ JSON è§£æå¤±è´¥ 201 const eleTmp = document.createElement('div'); 202 eleTmp.innerHTML = generate_avatar_opts_str; 203 // key èªå¨å ä¸ "" 鲿¢æ¥éï¼â èªå¨è½¬æ â 204 generate_avatar_opts_str = eleTmp.innerHTML 205 .replace(/'/g, '"') 206 .replace(/([\w]+):/g, '"$1":'); 207 generateAvatarOpts = JSON.parse(generate_avatar_opts_str); 208 } catch (e) { 209 console.error( 210 'Joe3主é¢é ç½®ï¼çææåæ§å¤´åçé 置解æå¤±è´¥ï¼ä½¿ç¨é»è®¤é ç½®ãgenerate_avatar_opts_str:', 211 generate_avatar_opts_str, 212 ' ,error:', 213 e 214 ); 215 } 216 } 217 return generateAvatarOpts; 218 })(), 219 errorImg: function (target, src) { 220 const targetSrc = target.getAttribute('src'); 221 console.log( 222 'å è½½å¾ç失败', 223 ' ,srcArg:', 224 src, 225 ' .target.src:', 226 targetSrc, 227 ' ,target.alt:', 228 target.getAttribute('alt'), 229 ' ,target.dataset.errSrc:', 230 target.dataset.errSrc, 231 ' ,target.dataset.textAvatar:', 232 target.dataset.textAvatar 233 ); 234 235 let generatedTextAvatar; 236 let generatedTextAvatarBase64; 237 238 switch (src) { 239 case 'HomeErrImg': { 240 // 妿 src æ¯ HomeErrImg å使ç¨é¦é¡µé ç½®éé ç½®çæç« é误缺çå¾ 241 src = '/themes/theme-Joe3/assets/img/default_thumbnail.png'; 242 break; 243 } 244 case 'LinksErrImg': { 245 // 妿 src æ¯ LinksErrImg å使ç¨åé¾é ç½®éé ç½®çåé¾é»è®¤ logo 246 src = target.dataset.errSrc || '/themes/theme-Joe3/assets/img/default_links_logo.png'; 247 if ( 248 !src || 249 src === targetSrc ||
250 (targetSrc && targetSrc.indexOf('/assets/img/transparent-placeholder.png') !== -1) 251 ) { 252 if (target.dataset.textAvatar || target.getAttribute('alt')) { 253 generatedTextAvatar = target.dataset.textAvatar || target.getAttribute('alt'); 254 generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar); 255 src = generatedTextAvatarBase64; 256 } else { 257 src = '/themes/theme-Joe3/assets/img/default_links_logo.png'; 258 } 259 } 260 break; 261 } 262 case 'ErrAvatarImg': { 263 // 妿 src æ¯ ErrAvatarImg å使ç¨å主é ç½®éé ç½®çé»è®¤å¤´å 264 src = target.dataset.errSrc || '/upload/photo_2025-09-26_13-23-33.jpg'; 265 if ( 266 !src || 267 src === targetSrc || 268 (targetSrc && targetSrc.indexOf('/assets/img/transparent-placeholder.png') !== -1) 269 ) { 270 if (target.dataset.textAvatar || target.getAttribute('alt')) { 271 generatedTextAvatar = target.dataset.textAvatar || target.getAttribute('alt'); 272 generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar); 273 src = generatedTextAvatarBase64; 274 } else { 275 src = '/themes/theme-Joe3/assets/img/peeps-avatar.png'; 276 } 277 } 278 break; 279 } 280 case 'LoadFailedImg': { 281 // 妿 src æ¯ LoadFailedImg å使ç¨å 载失败çå¾ç 282 src = target.dataset.errSrc || '/themes/theme-Joe3/assets/img/img_load_failed.jpg'; 283 break; 284 } 285 } 286 287 const nowSrc = src || target.dataset.errSrc || '/themes/theme-Joe3/assets/img/Joe3.png'; 288 if (targetSrc === nowSrc) return; 289 290 if ( 291 generatedTextAvatarBase64 && 292 generatedTextAvatar && 293 nowSrc === generatedTextAvatarBase64 294 ) { 295 target.setAttribute('data-generated-text-avatar', generatedTextAvatar); 296 } else if (target.getAttribute('data-generated-text-avatar')) { 297 target.removeAttribute('data-generated-text-avatar'); 298 } 299 300 console.log( 301 'å è½½å¾ç失败ï¼ä½¿ç¨é»è®¤å¾ç:', 302 nowSrc, 303 ' ,oldSrc:', 304 targetSrc, 305 ' ,target.alt:', 306 target.getAttribute('alt') 307 ); 308 target.setAttribute('onerror', null); 309 target.setAttribute('src', nowSrc); 310 }, 311 // å·²ç»å è½½ transparent-placeholder.png åæ¿æ¢å¾ç 312 loadedPlaceholderReplaceImg: function (target, src) { 313 const targetSrc = target.getAttribute('src'); 314 if ( 315 !targetSrc || 316 src === targetSrc || 317 targetSrc.indexOf('/assets/img/transparent-placeholder.png') === -1 318 ) { 319 return; 320 } 321 322 console.log( 323 'å è½½å¾ç transparent-placeholder.png åæ¿æ¢å¾ç', 324 ' ,srcArg:', 325 src, 326 ' ,target.alt:', 327 target.getAttribute('alt'), 328 ' ,target.dataset.replaceSrc:', 329 target.dataset.replaceSrc, 330 ' ,target.dataset.textAvatar:', 331 target.dataset.textAvatar 332 ); 333 334 let generatedTextAvatar; 335 let generatedTextAvatarBase64; 336 337 switch (src) { 338 case 'LinksImg': { 339 // 妿 src æ¯ LinksImg å使ç¨åé¾é ç½®éé ç½®çåé¾é»è®¤ logo 340 src = target.dataset.replaceSrc || '/themes/theme-Joe3/assets/img/default_links_logo.png'; 341 if (!src || src === targetSrc) { 342 if (target.dataset.textAvatar || target.getAttribute('alt')) { 343 generatedTextAvatar = target.dataset.textAvatar || target.getAttribute('alt'); 344 generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar); 345 src = generatedTextAvatarBase64; 346 } else { 347 src = '/themes/theme-Joe3/assets/img/default_links_logo.png'; 348 } 349 } 350 break; 351 } 352 case 'AvatarImg': { 353 // 妿 src æ¯ AvatarImg å使ç¨å主é ç½®éé ç½®çé»è®¤å¤´å 354 src = target.dataset.replaceSrc || '/upload/photo_2025-09-26_13-23-33.jpg'; 355 if (!src || src === targetSrc) { 356 if (target.dataset.textAvatar || target.getAttribute('alt')) { 357 generatedTextAvatar = target.dataset.textAvatar || target.getAttribute('alt'); 358 target.setAttribute('data-generated-text-avatar', generatedTextAvatar); 359 generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar); 360 src = generatedTextAvatarBase64; 361 } else { 362 src = '/themes/theme-Joe3/assets/img/peeps-avatar.png'; 363 } 364 } 365 break; 366 } 367 } 368 369 const nowSrc = 370 src || target.dataset.replaceSrc || '/themes/theme-Joe3/assets/img/Joe3.png';
371 if (targetSrc === nowSrc) return; 372 373 if ( 374 generatedTextAvatarBase64 && 375 generatedTextAvatar && 376 nowSrc === generatedTextAvatarBase64 377 ) { 378 target.setAttribute('data-generated-text-avatar', generatedTextAvatar); 379 } else if (target.getAttribute('data-generated-text-avatar')) { 380 target.removeAttribute('data-generated-text-avatar'); 381 } 382 383 console.log('å è½½æ¿æ¢åçå¾ç:', nowSrc, ' ,target.alt:', target.getAttribute('alt')); 384 target.setAttribute('onload', null); 385 target.setAttribute('src', nowSrc); 386 }, 387 replaceAllTextAvatarImage: function () { 388 console.log('call replaceAllTextAvatarImage'); 389 const generatedEles = document.querySelectorAll('img[data-generated-text-avatar]'); 390 generatedEles.forEach(function (ele) { 391 const generatedTextAvatar = ele.getAttribute('data-generated-text-avatar'); 392 const generatedTextAvatarBase64 = Joe.generateTextAvatarImage(generatedTextAvatar); 393 ele.setAttribute('src', generatedTextAvatarBase64); 394 }); 395 }, 396 // çæéæºé¢è²å½æ° 397 getRandomColor: function (alpha) { 398 const letters = '0123456789ABCDEF'; 399 let color = '#'; 400 for (let i = 0; i < 6; i++) { 401 color += letters[Math.floor(Math.random() * 16)]; 402 } 403 if (alpha !== undefined) { 404 return color + (alpha >= 0 && alpha <= 1 ? Math.round(alpha * 255).toString(16) : 'FF'); 405 } 406 return color; 407 }, 408 // çæéæºé¢è²çæåæ§å¤´å 409 generateTextAvatarImage: function (text, opts) { 410 opts = Object.assign({}, Joe.bloggerGenerateAvatarOpts, opts || {}); 411 opts.fontSize = opts.fontSize || 50; 412 opts.font = opts.font || 'Great Vibes'; 413 opts.canvasRadius = opts.canvasWidth || 1.5 * opts.fontSize; 414 415 // å¦ææ¯ var(--xxxx)ï¼åè¯´ææ¯ css é ç½®çåéï¼éè¦ä»htmlæ ·å¼ä¸è§£ææå ·ä½å¼ 416 if (opts.textColor && /var\(--([\w-]+)\)/.test(opts.textColor)) { 417 const match = opts.textColor.match(/var\(--([\w-]+)\)/); 418 if (match) { 419 let cssVar = 420 getComputedStyle(document.documentElement) 421 .getPropertyValue('--' + match[1]) 422 .trim() || 423 getComputedStyle(document.body) 424 .getPropertyValue('--' + match[1]) 425 .trim(); 426 if (cssVar) { 427 opts.textColor = cssVar; 428 } 429 } 430 } 431 432 // å¦ææ¯ var(--xxxx)ï¼åè¯´ææ¯ css é ç½®çåéï¼éè¦ä»htmlæ ·å¼ä¸è§£ææå ·ä½å¼ 433 if (opts.bgColor && /var\(--([\w-]+)\)/.test(opts.bgColor)) { 434 const match = opts.bgColor.match(/var\(--([\w-]+)\)/); 435 if (match) { 436 let cssVar = 437 getComputedStyle(document.documentElement) 438 .getPropertyValue('--' + match[1]) 439 .trim() || 440 getComputedStyle(document.body) 441 .getPropertyValue('--' + match[1]) 442 .trim(); 443 if (cssVar) { 444 opts.bgColor = cssVar; 445 } 446 } 447 } 448 449 // å建ä¸ä¸ªæ°ç Canvas å ç´ 450 const canvas = document.createElement('canvas'); 451 const ctx = canvas.getContext('2d'); 452 453 // 设置 Canvas ç尺寸 454 canvas.width = opts.canvasRadius; 455 canvas.height = opts.canvasRadius; 456 457 if (opts.bgColor) { 458 ctx.fillStyle = opts.bgColor; 459 } else { 460 // çæéæºé¢è²çæ¸åèæ¯ 461 const gradient = ctx.createRadialGradient( 462 canvas.width / 2, 463 canvas.height / 2, 464 0, 465 canvas.width / 2, 466 canvas.height / 2, 467 canvas.width / 2 468 ); 469 gradient.addColorStop(0, Joe.getRandomColor(0.7)); 470 gradient.addColorStop(1, Joe.getRandomColor(0.7)); 471 472 // ç»å¶æ¸åèæ¯ 473 ctx.fillStyle = gradient; 474 } 475 476 ctx.beginPath(); 477 ctx.arc(canvas.width / 2, canvas.height / 2, canvas.width / 2, 0, Math.PI * 2); 478 ctx.fill(); 479 480 // è®¾ç½®ææ¬æ ·å¼ 481 ctx.font = `${opts.fontSize}px ${opts.font}`; 482 483 if (opts.textColor) { 484 ctx.fillStyle = opts.textColor; 485 } else if (opts.useTextGradient) { 486 // çææåççº¿æ§æ¸å 487 const textGradient = ctx.createLinearGradient(0, 0, canvas.width, canvas.height); 488 textGradient.addColorStop(0, Joe.getRandomColor(0.9)); // æåçæ¸åè² 489 textGradient.addColorStop(1, Joe.getRandomColor(0.9)); // æåçæ¸åè² 490 ctx.fillStyle = textGradient; 491 } else if (opts.bgColor) { 492 // 设置äºèæ¯è²ï¼ä½æ¯æ²¡æè®¾ç½®æåé¢è²ï¼åéè¦è®¾ç½®é»è®¤æåé¢è²ä¸ºé»è²ï¼é²æ¢æåé¢è²åèæ¯è²ä¸è´ã注ï¼èæ¯è²ä¸ºæ¸åè²ï¼æåè½æ¾ç¤ºåºæ¥ï¼å æ¤ä¸éè¦è®¾ç½®æåé¢è²ã
493 // 妿 bgColor 为é»è²ï¼åæåé¢è²è®¾ç½®ä¸ºç½è²ï¼å¦å设置为é»è² 494 ctx.fillStyle = /(#000000|#000|black)/.test(opts.bgColor) ? '#fff' : '#000'; 495 } 496 497 ctx.textAlign = 'center'; 498 ctx.textBaseline = 'middle'; 499 500 // å¨ Canvas ä¸ç»å¶ææ¬ 501 ctx.fillText(text.charAt(0), canvas.width / 2, canvas.height / 2); 502 503 // è¿åçæçå¾ç对象 base64 ç¼ç 504 return canvas.toDataURL(); 505 }, 506 }; 507 ThemeConfig.enable_console_theme && 508 console.log( 509 '%cTheme By Jiewen' + ' | çæ¬ V' + ThemeConfig.version, 510 'padding: 8px 15px;color:#fff;background: linear-gradient(270deg, #986fee, #8695e6, #68b7dd, #18d7d3);border-radius: 0 15px 0 15px;' 511 ); 512 </script>
512 513 514 515 <!-- <th:block th:replace="~{modules/themeSettingVariable :: themeSetting}" />--> 516 <!-- <th:block th:if="${htmlType == 'post'}">--> 517 <!-- <th:block th:replace="~{modules/postMetaVariable :: postSetting}" />--> 518 <!-- </th:block>--> 519 <link rel="shortcut icon" size="32x32" href="/upload/favicon.png" /> 520 <link rel="canonical" href="https://disue.com" /> 521 <link rel="apple-touch-icon" sizes="180x180" href="/upload/favicon.png" /> 522 523 <style> 524 525 @font-face { 526 font-family: "Joe Font"; 527 font-weight: 400; 528 font-style: normal; 529 font-display: swap; 530 531 532 533 } 534 html body { 535 --waline-avatar-size: 2.25rem; 536 --waline-m-avatar-size: calc(var(--waline-avatar-size) * 9 / 13); 537 --waline-theme-color:#1A73E8; 538 --waline-active-color: #1A73E8; 539 540 --theme: #1A73E8; 541 --wave-color: #fff; 542 --scroll-bar: #c0c4cc; 543 --loading-bar: var(--theme); 544 --img-max-width: 100%; 545 font-family: "Joe Font", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软é é»", Arial, "sans-serif"; 546 --halo-comment-widget-base-font-family: "Joe Font", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软é é»", Arial, "sans-serif"; 547 --halo-search-widget-base-font-family: "Joe Font", "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软é é»", Arial, "sans-serif"; 548 --halo-comment-widget-base-color: var(--main); 549 --halo-comment-widget-base-info-color:var(--routine); 550 551 552 553 } 554 html[data-mode='dark'] body { 555 556 --waline-theme-color:#9999ff; 557 --waline-active-color: #9999ff; 558 --theme: #9999ff; 559 --wave-color: #fff; 560 --scroll-bar: #c0c4cc; 561 --loading-bar: var(--theme); 562 --halo-search-widget-color-modal-layer: rgba(10, 11, 12, 0.8); 563 --halo-search-widget-color-modal-content-bg: rgb(27, 27, 30); 564 --halo-search-widget-color-form-input: rgb(255, 255, 255); 565 --halo-search-widget-color-form-input-placeholder: #868686; 566 --halo-search-widget-color-form-input-bg: rgb(27, 27, 30); 567 --halo-search-widget-color-form-divider: #292929; 568 --halo-search-widget-color-result-item-bg: #232323; 569 --halo-search-widget-color-result-item-hover-bg: #2b3033; 570 --halo-search-widget-color-result-item-title: rgb(255 255 255); 571 --halo-search-widget-color-result-item-content: #868686; 572 --halo-search-widget-color-command-kbd-item: #868686; 573 --halo-search-widget-color-command-kbd-border: #868686; 574 --halo-search-widget-color-result-empty: #868686; 575 --halo-comment-widget-component-form-input-bg-color: #475569; 576 --halo-comment-widget-component-form-input-color: #ffffff; 577 --halo-comment-widget-component-form-input-border-color: #495056; 578 --halo-comment-widget-component-form-input-border-color-focus: #65a3ff; 579 --halo-comment-widget-component-form-input-box-shadow-focus: 0 0 0 0.15em #1c3966; 580 --halo-comment-widget-component-form-button-login-bg-color: #334155; 581 --halo-comment-widget-component-form-button-login-bg-color-hover: #475569; 582 --halo-comment-widget-component-form-button-login-border-color: #475569; 583 --halo-comment-widget-component-form-button-submit-border-color: #475569; 584 --halo-comment-widget-component-form-button-submit-border-color-hover: #64748b; 585 --halo-comment-widget-component-form-button-emoji-color: #cbd5e1; 586 587 --halo-comment-widget-component-comment-item-action-bg-color-hover: #475569; 588 --halo-comment-widget-component-comment-item-action-color: #64748b; 589 --halo-comment-widget-component-comment-item-action-color-hover: #94a3b8; 590 591 --halo-comment-widget-component-pagination-button-bg-color-hover: #475569; 592 --halo-comment-widget-component-pagination-button-bg-color-active: #475569; 593 --halo-comment-widget-component-pagination-button-border-color-active: #475569; 594 595 --halo-comment-widget-component-emoji-picker-rgb-color: 222, 222, 221; 596 --halo-comment-widget-component-emoji-picker-rgb-accent: 58, 130, 247; 597 --halo-comment-widget-component-emoji-picker-rgb-background: 21, 22, 23; 598 --halo-comment-widget-component-emoji-picker-rgb-input: 0, 0, 0; 599 --halo-comment-widget-component-emoji-picker-color-border: rgba(255, 255, 255, 0.1); 600 --halo-comment-widget-component-emoji-picker-color-border-over: rgba(255, 255, 255, 0.2); 601 602 603 } 604 ::-webkit-scrollbar {
605 width: 8px; 606 } 607 ::-webkit-scrollbar-thumb { 608 background: var(--scroll-bar); 609 } 610 611 612 html[data-mode="dark"] body { 613 background-repeat: no-repeat; 614 background-size: cover; 615 position: relative; 616 } 617 618 html[data-mode="dark"] body::before { 619 content: ""; 620 position: fixed; 621 top: 0; 622 left: 0; 623 width: 100%; 624 height: 100%; 625 background-image: url(""); 626 background-position: top center; 627 background-size: cover; 628 background-repeat: no-repeat; 629 z-index: -1; /* ä¿è¯å 容å±å¨èæ¯ä¹ä¸ */ 630 } 631 632 633 634 html[data-mode="dark"] body { 635 background-image: none; 636 } 637 638 </style> 639 640 641 <!-- å è½½æ¡ --> 642 <link rel="stylesheet" href="/themes/theme-Joe3/assets/lib/nprogress/nprogress.min.css" /> 643 <style> 644 #nprogress .bar { 645 height: 3px; 646 background: var(--loading-bar); 647 } 648 #nprogress .peg { 649 display: none; 650 } 651 </style> 652
652<script src="/themes/theme-Joe3/assets/lib/nprogress/nprogress.min.js"></script>
652 653 654 <link 655 rel="preload stylesheet" 656 as="style" 657 href="/themes/theme-Joe3/assets/css/min/normalize.min.css?v=1.4.0" 658 /> 659 <link 660 rel="preload stylesheet" 661 as="style" 662 href="/themes/theme-Joe3/assets/lib/font-awesome/css/font-awesome.min.css" 663 /> 664 <link 665 rel="preload stylesheet" 666 as="style" 667 href="//at.alicdn.com/t/font_2788564_crkap1ed9j5.css" 668 /> 669 <link 670 rel="preload stylesheet" 671 as="style" 672 href="//at.alicdn.com/t/c/font_4198339_jcoci5bgy7.css" 673 /> 674 675 <link 676 rel="preload stylesheet" 677 as="style" 678 href="/themes/theme-Joe3/assets/css/min/theme.min.css?v=1.4.0" 679 /> 680 <style> 681 #Joe .joe_container { 682 max-width: 1320px !important; 683 } 684 685 @media (max-width: 1360px) { 686 #Joe .joe_container { 687 max-width: initial !important; 688 } 689 } 690 @media (max-width: 768px) { 691 #Joe .joe_container { 692 max-width: initial !important; 693 } 694 } 695 </style> 696 <link rel="stylesheet" href="/themes/theme-Joe3/assets/lib/qmsg/qmsg.css" /> 697 <link 698 rel="preload stylesheet" 699 as="style" 700 href="/themes/theme-Joe3/assets/lib/animate/animate.min.css" 701 /> 702 703 704 <link 705 rel="preload stylesheet" 706 as="style" 707 href="/themes/theme-Joe3/assets/css/min/global.min.css?v=1.4.0" 708 /> 709 710 711 712 713 714 715 <link 716 rel="preload stylesheet" 717 as="style" 718 href="/themes/theme-Joe3/assets/css/min/responsive.min.css?v=1.4.0" 719 /> 720 <link 721 rel="stylesheet" 722 href="/themes/theme-Joe3/assets/lib/fancybox/jquery.fancybox.min.css" 723 /> 724 725 726 <link 727 rel="preload stylesheet" 728 as="style" 729 href="/themes/theme-Joe3/assets/css/min/beauty.min.css?v=1.4.0" 730 /> 731 732 733
733<script src="/themes/theme-Joe3/assets/lib/[email protected]/jquery.min.js?v=1.4.0"></script>
733 734 735 <meta name="generator" content="Halo 2.26.1"/><!-- plugin-comment-widget start --> 736<link rel="modulepreload" href="/plugins/PluginCommentWidget/assets/static/comment-widget.js?version=3.0.0"> 737<link rel="stylesheet" href="/plugins/PluginCommentWidget/assets/static/index.css?version=3.0.0" /> 738<!-- plugin-comment-widget end --> 739<!-- PluginSearchWidget start -->
740<script src="/plugins/PluginSearchWidget/assets/static/search-widget.iife.js?version=1.7.1" defer></script>
740 741<link rel="stylesheet" href="/plugins/PluginSearchWidget/assets/static/style.css?version=1.7.1" /> 742<!-- PluginSearchWidget end --> 743<link rel="icon" href="/upload/favicon.png" /> 744</head> 745 <!-- /OG --> 746 747 <body> 748 <div id="Joe"> 749 750 <header class="joe_header"> 751 <div 752 class="joe_header__above topInDown fixed " 753 > 754 <div 755 class="joe_container joe_header_container" 756 > 757 <i class="joe-font joe-icon-caidan joe_header__above-slideicon"></i> 758 759 <a 760 title="Disue · è¿ªç´ " 761 class="joe_header__above-logo" 762 href="https://disue.com" 763 > 764 <img 765 style="border-radius:4px" 766 src="/upload/favicon.png" 767 alt="Disue · è¿ªç´ " 768 onerror="Joe.errorImg(this, 'ErrAvatarImg')" sizes="(max-width: 640px) 94vw, (max-width: 768px) 92vw, (max-width: 1024px) 88vw, min(800px, 85vw)" srcset="/upload/favicon.png?width=1600 1600w, /upload/favicon.png?width=400 400w, /upload/favicon.png?width=800 800w, /upload/favicon.png?width=1200 1200w" 769 /> 770 </a> 771 772 <nav 773 class="joe_header__above-nav " 774 > 775 776 <!-- èªé导èª--> 777 778 779 780 781 782 783 <a 784 class="item" 785 href="/" 786 title="é¦é¡µ" 787 > 788 789 é¦é¡µ 790 </a> 791 792 793 794 795 796 797 <a 798 class="item" 799 href="//img.disue.com" 800 target="_blank" 801 title="å¾åº" 802 > 803 804 å¾åº 805 </a> 806 807 808 809 810 811 812 <a 813 class="item" 814 href="/about" 815 target="_self" 816 title="å ³äº" 817 > 818 819 å ³äº 820 </a> 821 822 823 824 825 826 827 <a 828 class="item" 829 href="/links" 830 target="_self" 831 title="åé¾" 832 > 833 834 åé¾ 835 </a> 836 837 838 839 840 841 842 843 </nav> 844 845 <div class="joe_header__above-search"> 846 <!-- <div class="nav_login">--> 847 <!-- <th:block th:if="${#authentication.name == 'anonymousUser'}">--> 848 <!-- <a href="/console" title="æç´¢"><i class="jiewen joe-icon-zhanghao"></i></a>--> 849 <!-- </th:block>--> 850 <!-- <th:block th:if="${#authentication.name != 'anonymousUser'}">--> 851 <!-- <th:block th:with="contributor = ${contributorFinder.getContributor(#authentication.name)}">--> 852 <!-- <img th:src="${contributor.avatar}" th:title="${contributor.displayName}" th:alt="${contributor.displayName}" onerror="Joe.errorImg(this, 'ErrAvatarImg')" >--> 853 <!-- </th:block>--> 854 <!-- </th:block>--> 855 <!-- </div>--> 856 <!-- <input maxlength="16" autocomplete="off" placeholder="请è¾å ¥å ³é®å..." name="keyword" value="" class="input" type="text">--> 857 <button 858 type="submit" 859 id="halo-search" 860 class="submit" 861 style="border-radius: 17px 17px 17px 17px" 862 aria-label="æç´¢æé®" 863 > 864 <i class="joe-font joe-icon-search"></i> 865 </button> 866 <!-- <span class="icon"></span>--> 867 868 <!-- <nav class="result">--> 869 <!-- <a href="archives/ce-shi-wen-zhang.html" title="æµè¯æç« " class="item">--> 870 <!-- <span class="sort">1</span>--> 871 <!-- <span class="text">æµè¯æç« </span>--> 872 <!-- </a>--> 873 <!-- <a href="archives/hello-halo.html" title="Hello Halo" class="item">-->
874 <!-- <span class="sort">2</span>--> 875 <!-- <span class="text">Hello Halo</span>--> 876 <!-- </a>--> 877 <!-- </nav>--> 878 </div> 879 880 <a href="javascript:SearchWidget.open()" title="æç´¢" 881 ><i class="joe-font joe-icon-search joe_header__above-searchicon"></i 882 ></a> 883 </div> 884 </div> 885 886 <div class="joe_header__slideout"> 887 <div class="joe_header__slideout-wrap"> 888 <img 889 width="100%" 890 height="150" 891 class="joe_header__slideout-image" 892 src="/themes/theme-Joe3/assets/img/author_bg.jpg?v=1.4.0" 893 alt="ä¾§è¾¹æ å£çº¸" 894 onerror="Joe.errorImg(this)" sizes="(max-width: 640px) 94vw, (max-width: 768px) 92vw, (max-width: 1024px) 88vw, min(800px, 85vw)" srcset="/themes/theme-Joe3/assets/img/author_bg.jpg?v=1.4.0&width=1600 1600w, /themes/theme-Joe3/assets/img/author_bg.jpg?v=1.4.0&width=400 400w, /themes/theme-Joe3/assets/img/author_bg.jpg?v=1.4.0&width=800 800w, /themes/theme-Joe3/assets/img/author_bg.jpg?v=1.4.0&width=1200 1200w" 895 /> 896 <div class="joe_header__slideout-author"> 897 <img 898 width="50" 899 height="50" 900 class="avatar ls-is-cached lazyloaded" 901 data-src="/upload/photo_2025-09-26_13-23-33.jpg" 902 src="/upload/photo_2025-09-26_13-23-33.jpg" 903 alt="å主头å" 904 data-text-avatar="Disue · è¿ªç´ " 905 onload="Joe.loadedPlaceholderReplaceImg(this, 'AvatarImg')" 906 onerror="Joe.errorImg(this, 'ErrAvatarImg')" sizes="(max-width: 640px) 94vw, (max-width: 768px) 92vw, (max-width: 1024px) 88vw, min(800px, 85vw)" srcset="/upload/photo_2025-09-26_13-23-33.jpg?width=1600 1600w, /upload/photo_2025-09-26_13-23-33.jpg?width=400 400w, /upload/photo_2025-09-26_13-23-33.jpg?width=800 800w, /upload/photo_2025-09-26_13-23-33.jpg?width=1200 1200w" 907 /> 908 <div class="info"> 909 <a 910 class="link" 911 href="https://disue.com" 912 target="_blank" 913 rel="noopener noreferrer nofollow" 914 >Disue · è¿ªç´ 915 916 </a> 917 <p class="motto joe_motto">Carpe diem</p> 918 </div> 919 </div> 920 921 <ul class="joe_header__slideout-count"> 922 <li class="item"> 923 <i class="joe-font joe-icon-danganguanli"></i> 924 <span>累计æ°å <strong>16</strong> ç¯æç« </span> 925 </li> 926 927 <li class="item"> 928 <i class="joe-font joe-icon-remen"></i> 929 <span>累计å建 <strong>16</strong> 个æ ç¾</span> 930 </li> 931 932 933 <li class="item"> 934 <i class="joe-font joe-icon-message"></i> 935 <span>累计æ¶å° <strong>2</strong> æ¡è¯è®º</span> 936 </li> 937 938 939 </ul> 940 <ul class="joe_header__slideout-menu panel-box"> 941 <li> 942 <a class="link panel in" href="#" rel="nofollow"> 943 <span>æ ç®</span> 944 <i class="joe-font joe-icon-arrow-right"></i> 945 </a> 946 <ul class="slides panel-body panel-box panel-side-menu" style="display: block"> 947 948 949 950 951 952 953 <li> 954 <a 955 class="link" 956 href="/" 957 title="é¦é¡µ" 958 >é¦é¡µ</a 959 > 960 </li> 961 962 963 964 965 <li> 966 <a 967 class="link" 968 href="//img.disue.com" 969 target="_blank" 970 title="å¾åº" 971 >å¾åº</a 972 > 973 </li> 974 975 976 977 978 <li> 979 <a 980 class="link" 981 href="/about" 982 target="_self" 983 title="å ³äº" 984 >å ³äº</a 985 > 986 </li> 987 988 989 990 991 <li> 992 <a 993 class="link" 994 href="/links" 995 target="_self" 996 title="åé¾" 997 >åé¾</a 998 > 999 </li> 1000 1001 1002 1003 1004 1005 1006 </ul> 1007 </li> 1008 </ul> 1009 </div> 1010 </div> 1011 1012 <div class="joe_header__searchout"> 1013 <a href="javascript:SearchWidget.open()" title="æç´¢"></a> 1014 <!-- <div class="joe_container">--> 1015 1016 <!-- <div class="joe_header__searchout-inner">--> 1017 <!-- <form class="joe_header__above-search-mobile" method="get" action="http://localhost:8093/search">--> 1018 <!-- <input maxlength="16" autocomplete="off" placeholder="请è¾å ¥å ³é®å..." name="keyword" value="" class="input" type="text">--> 1019 <!-- <button type="submit" class="submit">æç´¢</button>--> 1020 <!-- </form>--> 1021 <!-- </div>--> 1022 <!-- </div>--> 1023 </div> 1024 1025 <div class="joe_header__toc"> 1026 <div class="joe_header__toc-wrap"> 1027 <div class="toc_top"> 1028 <h3>ç® å½<span>CONTENT</span></h3> 1029 <img 1030 width="100%" 1031 height="150" 1032 src="/themes/theme-Joe3/assets/img/context_bg.png" 1033 alt="æç« ç®å½" 1034 onerror="Joe.errorImg(this)" sizes="(max-width: 640px) 94vw, (max-width: 768px) 92vw, (max-width: 1024px) 88vw, min(800px, 85vw)" srcset="/themes/theme-Joe3/assets/img/context_bg.png?width=1600 1600w, /themes/theme-Joe3/assets/img/context_bg.png?width=400 400w, /themes/theme-Joe3/assets/img/context_bg.png?width=800 800w, /themes/theme-Joe3/assets/img/context_bg.png?width=1200 1200w" 1035 /> 1036 </div> 1037 <div id="js-toc-mobile" class="toc"></div> 1038 </div> 1039 </div> 1040 1041 <div class="joe_header__mask"></div> 1042 </header> 1043 1044 <!-- é¦é¡µå¤§å¾--> 1045 1046 <div 1047 class="joe_container joe_main_container page-journals animated showInUp " 1048 > 1049 <div class="joe_main"> 1050 <div 1051 class="joe_detail" 1052 > 1053 <h1 class="joe_detail__title txt-shadow">åæ é¾æ¥</h1> 1054 <article 1055 class="joe_detail__article animated fadeIn" 1056 > 1057 <h3>åé¾å表<span class="totals"> </span></h3> 1058 1059 <div 1060 class="links-group" 1061 data-link-group-sort-seq="0" 1062 data-link-group-create-time="2025-12-16T09:42:51.512166262Z" 1063 > 1064 <h5>常è§</h5> 1065 <ul class="joe_detail__friends evan-friends"> 1066 1067 <li 1068 class="joe_detail__friends-item" 1069 data-link-sort-seq="0" 1070 data-link-create-time="2025-12-16T09:42:23.498657108Z" 1071 > 1072 1073 <a 1074 class="contain" 1075 href="https://weiruan.org" 1076 :key="i" 1077 target="_blank"
1078 style="--fcolor:#7367F0 ;" 1079 rel="noopener noreferrer" 1080 > 1081 <div class="evan-f-left"> 1082 <div class="f-avatar"> 1083 <img 1084 width="40" 1085 height="40" 1086 class="avatar lazyload" 1087 src="/upload/photo_2025-09-26_13-23-33.jpg" 1088 data-src="/themes/theme-Joe3/assets/img/default_links_logo.png" 1089 alt="å¨è½¯ç§æ" 1090 onload="Joe.loadedPlaceholderReplaceImg(this, 'LinksImg')" 1091 onerror="Joe.errorImg(this, 'LinksErrImg')" sizes="(max-width: 640px) 94vw, (max-width: 768px) 92vw, (max-width: 1024px) 88vw, min(800px, 85vw)" srcset="/upload/photo_2025-09-26_13-23-33.jpg?width=1600 1600w, /upload/photo_2025-09-26_13-23-33.jpg?width=400 400w, /upload/photo_2025-09-26_13-23-33.jpg?width=800 800w, /upload/photo_2025-09-26_13-23-33.jpg?width=1200 1200w" 1092 /> 1093 </div> 1094 </div> 1095 <div class="evan-f-right"> 1096 <span class="title" style="--fcolor:#7367F0 "> 1097 <span 1098 class="sub-text" 1099 title="å¨è½¯ç§æ" 1100 >å¨è½¯ç§æ</span> 1101 <svg 1102 t="1658027717181" 1103 class="icon"
1104 viewBox="0 0 1024 1024" 1105 version="1.1" 1106 xmlns="http://www.w3.org/2000/svg" 1107 p-id="25920" 1108 width="200" 1109 height="200" 1110 > 1111 <path 1112 d="M0 0h1024v1024H0V0z" 1113 fill="#202425" 1114 opacity=".01" 1115 p-id="25921" 1116 ></path> 1117 <path 1118 d="M989.866667 512c0 263.918933-213.947733 477.866667-477.866667 477.866667S34.133333 775.918933 34.133333 512 248.081067 34.133333 512 34.133333s477.866667 213.947733 477.866667 477.866667z" 1119 fill="#FF7744" 1120 p-id="25922" 1121 ></path> 1122 <path 1123 d="M787.114667 339.285333a51.2 51.2 0 0 1 0 72.362667l-307.2 307.2a51.2 51.2 0 0 1-72.362667 0l-170.666667-170.666667a51.2 51.2 0 0 1 72.362667-72.362666L443.733333 610.235733l271.018667-271.018666a51.2 51.2 0 0 1 72.362667 0z" 1124 fill="#FFFFFF" 1125 p-id="25923" 1126 ></path> 1127 </svg> 1128 </span> 1129 <div class="content"> 1130 <div class="desc"> 1131 1132 </div> 1133 </div> 1134 </div> 1135 </a> 1136 1137 </li> 1138 1139 </ul> 1140 </div> 1141 1142 1143
1143<script> 1144 // TODO qiushaocloud æå¥½ç忳就æ¯å¨ä¸é¢ç´æ¥æåºï¼æå¯¹ thymeleaf è¯æ³ä¸çæï¼å°è¯ä½¿ç¨äº #lists.sortï¼ä½ä¸ç´æ¥éï¼å æ¤æ¹æäº js æåºï¼å¸ææè½åç大佬帮å¿ä¼åä¸ä¸ 1145 (() => { 1146 // links-group æåº, link-group-sort-seq æ°åè¶å¤§è¶é å 1147 const linksGroupDefaultSort = 1148 'link_group_create_time_asc'; 1149 const linksDefaultSort = 'link_create_time_asc'; 1150 const joeDetailArticle = $('#Joe .page-journals .joe_detail__article'); 1151 const linksGroupEles = joeDetailArticle.find('.links-group'); 1152 linksGroupEles.sort((a, b) => { 1153 const aSortSeq = parseInt($(a).data('link-group-sort-seq') || 0); 1154 const bSortSeq = parseInt($(b).data('link-group-sort-seq') || 0); 1155 1156 if (!isNaN(bSortSeq) && !isNaN(aSortSeq)) { 1157 if (bSortSeq > 0 && aSortSeq > 0) return bSortSeq > aSortSeq ? 1 : -1; // link-group-sort-seq æ°åè¶å¤§è¶é å 1158 1159 if (bSortSeq > 0) return 1; // b.link-group-sort-seq éè¦æå¨åé¢ 1160 1161 if (aSortSeq > 0) return -1; // a.link-group-sort-seq éè¦æå¨åé¢ 1162 } 1163 1164 // è¥ link-group-sort-seq <= 0, åæé»è®¤æåºæ¹å¼è¿è¡æåº 1165 if ( 1166 linksGroupDefaultSort === 'links_group_create_time_asc' || 1167 linksGroupDefaultSort === 'links_group_create_time_desc' 1168 ) { 1169 // æç §å建æ¶é´ååº/éåºæåº 1170 const aCreateTime = parseInt( 1171 new Date($(a).data('link-group-create-time')).getTime() || 0 1172 ); 1173 const bCreateTime = parseInt( 1174 new Date($(b).data('link-group-create-time')).getTime() || 0 1175 ); 1176 return linksGroupDefaultSort === 'links_group_create_time_asc' 1177 ? aCreateTime > bCreateTime 1178 ? 1 1179 : -1 1180 : aCreateTime < bCreateTime 1181 ? 1 1182 : -1; 1183 } 1184 1185 return 0; // ä¸è¿è¡æåºï¼ä¿æåæé¡ºåºãå³:åé¾ç»ä»¶åæ¬çæåºæ¹å¼ã 1186 }); 1187 // linksGroupEles.remove(); 1188 joeDetailArticle.append(linksGroupEles); 1189 1190 linksGroupEles.each((_, linkGroupEle) => { 1191 // links-group å ç links æåº, link-sort-seq æ°åè¶å¤§è¶é å 1192 const linksUlEle = $(linkGroupEle).find('.joe_detail__friends'); 1193 const linksLiEles = linksUlEle.find('.joe_detail__friends-item'); 1194 linksLiEles.sort((a, b) => { 1195 const aSortSeq = parseInt($(a).data('link-sort-seq') || 0); 1196 const bSortSeq = parseInt($(b).data('link-sort-seq') || 0); 1197 1198 if (!isNaN(bSortSeq) && !isNaN(aSortSeq)) { 1199 if (bSortSeq > 0 && aSortSeq > 0) return bSortSeq > aSortSeq ? 1 : -1; // link-sort-seq æ°åè¶å¤§è¶é å 1200 1201 if (bSortSeq > 0) return 1; // b.link-sort-seq éè¦æå¨åé¢ 1202 1203 if (aSortSeq > 0) return -1; // a.link-sort-seq éè¦æå¨åé¢ 1204 } 1205 1206 // è¥ link-sort-seq <= 0, åæé»è®¤æåºæ¹å¼è¿è¡æåº 1207 if ( 1208 linksDefaultSort === 'links_create_time_asc' || 1209 linksDefaultSort === 'links_create_time_desc' 1210 ) { 1211 // æç §å建æ¶é´ååº/éåºæåº 1212 const aCreateTime = parseInt( 1213 new Date($(a).data('link-create-time')).getTime() || 0 1214 ); 1215 const bCreateTime = parseInt( 1216 new Date($(b).data('link-create-time')).getTime() || 0 1217 ); 1218 return linksDefaultSort === 'links_create_time_asc' 1219 ? aCreateTime > bCreateTime 1220 ? 1 1221 : -1 1222 : aCreateTime < bCreateTime 1223 ? 1 1224 : -1; 1225 } 1226 1227 return 0; // ä¸è¿è¡æåºï¼ä¿æåæé¡ºåºãå³:åé¾ç»ä»¶åæ¬çæåºæ¹å¼ã 1228 }); 1229 // linksLiEles.remove(); 1230 linksUlEle.append(linksLiEles); 1231 }); 1232 })(); 1233 </script>
1233 1234 </article> 1235 <article class="joe_detail__article animated fadeIn"> 1236 <h3>ç³è¯·æ ¼å¼</h3> 1237 <div class="link-requirement"> 1238 1239 1240 <p> 1241 <joe-message 1242 type="info" 1243 content='<em style="font-style:normal;font-weight:bold;">< å客åç§° + å客å°å + å客Logo + å客ç®ä» ></em><br>å客åç§°ï¼<br>å客å°åï¼<a href=""></a><br>å客Logoï¼<a href=""></a><br>å客ç®ä»ï¼<br>(大家å¨è¯è®ºä¸çè¨å³å¯)' 1244 > 1245 </joe-message> 1246 </p> 1247 1248 </div> 1249 </article> 1250 </div> 1251 1252 1253 <div class="joe_comment"> 1254 <div class="joe_comment_box"> 1255 <div class="box_title"> 1256 <h2>è¯è®ºåº</h2> 1257 </div> 1258 1259 <div id="comment-plugin-halo-run-Plugin-PluginLinks"></div>
1260<script type="module" data-pjax> 1261 import { init } from "/plugins/PluginCommentWidget/assets/static/comment-widget.js?version=3.0.0"; 1262 init( 1263 "#comment-plugin-halo-run-Plugin-PluginLinks", 1264 { 1265 group: "plugin.halo.run", 1266 kind: "Plugin", 1267 name: "PluginLinks", 1268 } 1269 ); 1270</script>
1270 1271 1272 1273 1274 </div> 1275 </div> 1276 1277 </div> 1278 1279 1280 <aside 1281 class="joe_aside" 1282 > 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 <!-- çé¨æç« --> 1293 1294 1295 <section class="joe_aside__item newest"> 1296 <div class="joe_aside__item-title"> 1297 <i class="joe-font joe-icon-huo"></i> 1298 <span class="text">çé¨æç« </span> 1299 </div> 1300 <div class="joe_aside__item-contain"> 1301 <ul class="list"> 1302 1303 <li class="item"> 1304 <a class="link" href="/archives/esim-global" 1305 >å ¨ç eSIM éè´ä¸é¿æä¿å·å ¨æ»ç¥</a 1306 > 1307 <i class="joe-font joe-icon-link"></i> 1308 </li> 1309 <li class="item"> 1310 <a class="link" href="/archives/cf-api-ns" 1311 >Cloudflare API ä¿®æ¹åå NS æå¡å¨æå</a 1312 > 1313 <i class="joe-font joe-icon-link"></i> 1314 </li> 1315 <li class="item"> 1316 <a class="link" href="/archives/esimgg" 1317 >å嫿¼«æ¸¸ç¦æ¼ï¼æ¥æ±èªç±è¿æ¥ï¼eSIM.gg</a 1318 > 1319 <i class="joe-font joe-icon-link"></i> 1320 </li> 1321 <li class="item"> 1322 <a class="link" href="/archives/free-domain" 1323 >å è´¹åå/ä½ä»·ååæ±æ»</a 1324 > 1325 <i class="joe-font joe-icon-link"></i> 1326 </li> 1327 <li class="item"> 1328 <a class="link" href="/archives/vpscommand" 1329 >VPS/Linux æå¡å¨å¸¸ç¨èæ¬åå½ä»¤</a 1330 > 1331 <i class="joe-font joe-icon-link"></i> 1332 </li> 1333 1334 </ul> 1335 </div> 1336 </section> 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 <!-- æ ç¾äº--> 1360 1361 <section class="joe_aside__item tags-cloud" id="tags-cloud"> 1362 <div class="joe_aside__item-title"> 1363 <i class="joe-font joe-icon-tag"></i> 1364 <span class="text">æ ç¾äº</span> 1365 <a class="tags_more" href="/tags">æ´å¤<i class="joe-font joe-icon-more-right"></i></a> 1366 </div> 1367 <div class="joe_aside__item-contain"> 1368 <div 1369 class="tags-cloud-list static" 1370 style="display:none" 1371 > 1372 1373 1374 <a 1375 data-label="çç½å" 1376 data-url="/tags/duan-wang-zhi" 1377 href="/tags/duan-wang-zhi" 1378 title="çç½å" 1379 >çç½å</a 1380 ><a 1381 data-label="Fail2Ban" 1382 data-url="/tags/fail2ban" 1383 href="/tags/fail2ban" 1384 title="Fail2Ban" 1385 >Fail2Ban</a 1386 ><a 1387 data-label="å½é äºè" 1388 data-url="/tags/guo-ji-hu-lian" 1389 href="/tags/guo-ji-hu-lian" 1390 title="å½é äºè" 1391 >å½é äºè</a 1392 ><a 1393 data-label="è·¨å¢ç½ç»ä¼å" 1394 data-url="/tags/kua-jing-wang-luo-you-hua" 1395 href="/tags/kua-jing-wang-luo-you-hua" 1396 title="è·¨å¢ç½ç»ä¼å" 1397 >è·¨å¢ç½ç»ä¼å</a 1398 ><a 1399 data-label="Hermes" 1400 data-url="/tags/hermes" 1401 href="/tags/hermes" 1402 title="Hermes" 1403 >Hermes</a 1404 ><a 1405 data-label="åå" 1406 data-url="/tags/yu-ming" 1407 href="/tags/yu-ming" 1408 title="åå" 1409 >åå</a 1410 ><a 1411 data-label="馿¸¯" 1412 data-url="/tags/xiang-gang" 1413 href="/tags/xiang-gang" 1414 title="馿¸¯" 1415 >馿¸¯</a 1416 ><a 1417 data-label="Docker" 1418 data-url="/tags/docker" 1419 href="/tags/docker" 1420 title="Docker" 1421 >Docker</a 1422 ><a 1423 data-label="CN2 GIA" 1424 data-url="/tags/cn2-gia" 1425 href="/tags/cn2-gia" 1426 title="CN2 GIA" 1427 >CN2 GIA</a 1428 ><a 1429 data-label="VPS" 1430 data-url="/tags/vps" 1431 href="/tags/vps" 1432 title="VPS" 1433 >VPS</a 1434 ><a 1435 data-label="eSIM" 1436 data-url="/tags/esim" 1437 href="/tags/esim" 1438 title="eSIM" 1439 >eSIM</a 1440 ><a 1441 data-label="AI" 1442 data-url="/tags/ai" 1443 href="/tags/ai" 1444 title="AI" 1445 >AI</a 1446 ><a 1447 data-label="Nginx" 1448 data-url="/tags/nginx" 1449 href="/tags/nginx" 1450 title="Nginx" 1451 >Nginx</a 1452 ><a 1453 data-label="Cloudflare" 1454 data-url="/tags/cloudflare" 1455 href="/tags/cloudflare" 1456 title="Cloudflare" 1457 >Cloudflare</a 1458 ><a 1459 data-label="Haloå客" 1460 data-url="/tags/halobo-ke" 1461 href="/tags/halobo-ke" 1462 title="Haloå客" 1463 >Haloå客</a 1464 > 1465 1466 1467 1468 </div> 1469 1470 <div id="tags-3d"> 1471 <div class="empty">å è½½ä¸â¦</div> 1472 </div> 1473 1474 </div> 1475 </section> 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 <!-- åç±»äº--> 1512 1513 <section class="joe_aside__item tags-cloud" id="categories-cloud"> 1514 <div class="joe_aside__item-title">
1515 <i class="joe-font joe-icon-tag"></i> 1516 <span class="text">åç±»äº</span> 1517 <a class="tags_more" href="/categories" 1518 >æ´å¤<i class="joe-font joe-icon-more-right"></i 1519 ></a> 1520 </div> 1521 <div class="joe_aside__item-contain"> 1522 <div 1523 class="categories-cloud-list static" 1524 > 1525 1526 1527 1528 <a 1529 data-label="岿æ¾é" 1530 data-url="/categories/life" 1531 href="/categories/life" 1532 title="岿æ¾é" 1533 >岿æ¾é</a 1534 ><a 1535 data-label="æ°åçæ´»" 1536 data-url="/categories/digitalnomad" 1537 href="/categories/digitalnomad" 1538 title="æ°åçæ´»" 1539 >æ°åçæ´»</a 1540 ><a 1541 data-label="äºç«¯æè ¾" 1542 data-url="/categories/cloudtech" 1543 href="/categories/cloudtech" 1544 title="äºç«¯æè ¾" 1545 >äºç«¯æè ¾</a 1546 > 1547 1548 1549 </div> 1550 1551 </div> 1552 </section> 1553 1554 1555 1556 1557 1558 1559 </aside> 1560 1561 1562 </div> 1563 1564 <div class="joe_action"> 1565 1566 1567 1568 <div class="joe_action_item random"> 1569 <svg 1570 t="1726158438632" 1571 class="icon"
1572 viewBox="0 0 1024 1024" 1573 version="1.1" 1574 xmlns="http://www.w3.org/2000/svg" 1575 p-id="6113" 1576 width="200" 1577 height="200" 1578 > 1579 <path 1580 d="M241.92 733.12c-6.08 0-11.84-1.6-17.28-5.12-100.8-64.64-163.2-178.88-163.2-297.92C61.44 231.04 217.28 75.2 416 75.2c119.04 0 233.28 62.4 297.92 163.2 9.6 14.72 5.12 34.56-9.6 44.16-14.72 9.6-34.56 5.12-44.16-9.6-52.8-82.56-146.56-133.76-244.16-133.76-163.2 0-290.88 127.68-290.88 290.88 0 97.6 51.2 191.04 133.76 244.16 14.72 9.6 19.2 29.44 9.6 44.16-5.76 9.6-16 14.72-26.56 14.72z" 1581 p-id="6114" 1582 ></path> 1583 <path 1584 d="M580.8 948.8c-9.6 0-19.2-1.6-29.12-4.48-25.28-8-43.2-25.28-51.84-49.92L302.08 428.48c-8-19.2-7.68-40.32 0.64-60.16 9.28-21.44 26.88-38.4 48.64-46.72 16.32-8 41.28-8 60.48 0.32l495.68 188.8c21.76 8.32 39.36 25.28 48.64 46.72 8.64 19.84 8.64 41.28 0.64 60.16-8 22.72-25.92 40-51.2 48l-183.68 59.84-62.72 169.6c-14.08 34.24-44.16 53.76-78.4 53.76z m-199.68-569.28c-1.92 0-3.52 0.32-4.48 0.64-8 3.2-12.8 7.68-15.04 13.12-1.28 2.56-2.24 6.4-0.64 10.24l198.72 467.84c2.24 6.72 4.8 9.6 11.52 11.84 19.2 6.08 26.56-6.08 28.8-11.84l67.52-182.72c3.52-9.28 10.88-16.32 20.16-19.2l198.72-64.64c7.04-2.24 9.28-5.44 11.2-9.92 2.24-5.44 1.28-9.28 0-12.16a23.2 23.2 0 0 0-12.48-12.16l-496.64-189.12c-0.64-0.32-1.6-0.64-2.24-0.96a14.496 14.496 0 0 0-5.12-0.96z" 1585 p-id="6115" 1586 ></path> 1587 </svg> 1588 </div> 1589 1590 1591 <div class="joe_action_item mode"> 1592 <svg 1593 class="mode-light" 1594 height="25"
1595 viewBox="0 0 1024 1024" 1596 width="25" 1597 xmlns="http://www.w3.org/2000/svg" 1598 > 1599 <path 1600 d="M234.24 512a277.76 277.76 0 1 0 555.52 0 277.76 277.76 0 1 0-555.52 0zM512 187.733a42.667 42.667 0 0 1-42.667-42.666v-102.4a42.667 42.667 0 0 1 85.334 0v102.826A42.667 42.667 0 0 1 512 187.733zm-258.987 107.52a42.667 42.667 0 0 1-29.866-12.373l-72.96-73.387a42.667 42.667 0 0 1 59.306-59.306l73.387 72.96a42.667 42.667 0 0 1 0 59.733 42.667 42.667 0 0 1-29.867 12.373zm-107.52 259.414H42.667a42.667 42.667 0 0 1 0-85.334h102.826a42.667 42.667 0 0 1 0 85.334zm34.134 331.946a42.667 42.667 0 0 1-29.44-72.106l72.96-73.387a42.667 42.667 0 0 1 59.733 59.733l-73.387 73.387a42.667 42.667 0 0 1-29.866 12.373zM512 1024a42.667 42.667 0 0 1-42.667-42.667V878.507a42.667 42.667 0 0 1 85.334 0v102.826A42.667 42.667 0 0 1 512 1024zm332.373-137.387a42.667 42.667 0 0 1-29.866-12.373l-73.387-73.387a42.667 42.667 0 0 1 0-59.733 42.667 42.667 0 0 1 59.733 0l72.96 73.387a42.667 42.667 0 0 1-29.44 72.106zm136.96-331.946H878.507a42.667 42.667 0 1 1 0-85.334h102.826a42.667 42.667 0 0 1 0 85.334zM770.987 295.253a42.667 42.667 0 0 1-29.867-12.373 42.667 42.667 0 0 1 0-59.733l73.387-72.96a42.667 42.667 0 1 1 59.306 59.306l-72.96 73.387a42.667 42.667 0 0 1-29.866 12.373z" 1601 /> 1602 </svg> 1603 <svg 1604 class="mode-dark" 1605 height="25"
1606 viewBox="0 0 1024 1024" 1607 width="25" 1608 xmlns="http://www.w3.org/2000/svg" 1609 > 1610 <path 1611 d="M587.264 104.96c33.28 57.856 52.224 124.928 52.224 196.608 0 218.112-176.128 394.752-393.728 394.752-29.696 0-58.368-3.584-86.528-9.728C223.744 832.512 369.152 934.4 538.624 934.4c229.376 0 414.72-186.368 414.72-416.256 1.024-212.992-159.744-389.12-366.08-413.184z" 1612 /> 1613 <path 1614 d="M340.48 567.808l-23.552-70.144-70.144-23.552 70.144-23.552 23.552-70.144 23.552 70.144 70.144 23.552-70.144 23.552-23.552 70.144zM168.96 361.472l-30.208-91.136-91.648-30.208 91.136-30.208 30.72-91.648 30.208 91.136 91.136 30.208-91.136 30.208-30.208 91.648z" 1615 /> 1616 </svg> 1617 </div> 1618 1619 1620 <div class="joe_action_item back2top"> 1621 <svg height="25" viewBox="0 0 1024 1024" width="25" xmlns="http://www.w3.org/2000/svg"> 1622 <path 1623 d="M725.902 498.916c18.205-251.45-93.298-410.738-205.369-475.592l-6.257-3.982-6.258 3.414c-111.502 64.853-224.711 224.142-204.8 475.59-55.751 53.476-80.214 116.623-80.214 204.8v15.36l179.2-35.27c11.378 40.39 58.596 69.973 113.21 69.973 54.613 0 101.262-29.582 112.64-68.836l180.337 36.41v-15.36c-.569-89.885-25.031-153.6-82.489-206.507zM571.733 392.533c-33.564 31.29-87.04 28.445-118.329-5.12s-28.444-87.04 5.12-117.76c33.565-31.289 87.04-28.444 118.33 5.12s28.444 86.471-5.12 117.76zm-56.32 368.64c-35.84 0-64.284 29.014-64.284 64.285 0 35.84 54.044 182.613 64.284 182.613s64.285-146.773 64.285-182.613c0-35.271-29.014-64.285-64.285-64.285z" 1624 /> 1625 </svg> 1626 </div> 1627 1628 </div> 1629 1630 1631 <footer 1632 class="joe_footer " 1633 > 1634 <div 1635 class="joe_container" 1636 > 1637 <div class="item"> 1638 <p> 1639 © 2021 - 2026<a 1640 href="https://disue.com" 1641 target="_blank" 1642 rel="noopener noreferrer" 1643 > 1644 Disue · è¿ªç´ 1645 </a> 1646 1647 </p> 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 <p class="site_driven"> 1661 æ¬ç«ç¹ç± 1662 <a 1663 href="https://go.ms.ci/bwh" 1664 target="_blank" 1665 rel="noopener noreferrer nofollow" 1666 > 1667 <img 1668 class="custom" 1669 src="/upload/logo1.png" 1670 alt="äºæå¡å" 1671 onerror="Joe.errorImg(this, 'LoadFailedImg')" sizes="(max-width: 640px) 94vw, (max-width: 768px) 92vw, (max-width: 1024px) 88vw, min(800px, 85vw)" srcset="/upload/logo1.png?width=1600 1600w, /upload/logo1.png?width=400 400w, /upload/logo1.png?width=800 800w, /upload/logo1.png?width=1200 1200w" 1672 /> </a 1673 >æä¾äºæå¡ 1674 </p> 1675 1676 1677 1678 1679 </div> 1680 <div class="side-col"> 1681 1682 <div class="item"> 1683 1684 <a class="rss" href="/rss.xml" target="_blank" rel="noopener noreferrer" 1685 ><i class="joe-font joe-icon-rss-fill"></i> RSS</a 1686 > 1687 1688 1689 <a href="/sitemap.xml" target="_blank" rel="noopener noreferrer"> 1690 ç«ç¹å°å¾ 1691 </a> 1692 1693 </div> 1694 1695 1696 </div> 1697 </div> 1698 </footer> 1699 1700 </div> 1701 1702 <!-- ===== å¼å ¥èæ¬ start ===== --> 1703 <!-- <th:block th:if="${htmlType == 'index' && theme.config.home.enable_index_list_effect == true} or ${htmlType == 'journals' && theme.config.journals.enable_journal_effect == true} or ${htmlType == 'photos' && theme.config.photos.enable_photos_effect == true}">--> 1704
1704<script src="/themes/theme-Joe3/assets/lib/wowjs/wow.min.js"></script>
1704 1705 <!-- </th:block>--> 1706
1706<script src="/themes/theme-Joe3/assets/lib/lazysizes/lazysizes.min.js"></script>
1706 1707
1707<script src="/themes/theme-Joe3/assets/lib/qmsg/qmsg.js"></script>
1707 1708 1709
1709<script src="/themes/theme-Joe3/assets/js/min/utils.min.js"></script>
1709 1710 1711 1712 1713 1714
1714<script src="/themes/theme-Joe3/assets/lib/fancybox/jquery.fancybox.min.js"></script>
1714 1715 1716
1716<script src="/themes/theme-Joe3/assets/js/min/custom.min.js?v=1.4.0"></script>
1716 1717 1718 1719
1719<script src="/themes/theme-Joe3/assets/lib/favico/favico.min.js"></script>
1719 1720 1721 1722 <!--ç¸å--> 1723 1724 1725 <!--===== å¼å ¥é¡µé¢çº§js start =====--> 1726
1726<script src="/themes/theme-Joe3/assets/js/min/common.min.js?v=1.4.0"></script>
1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 <!-- ===== å¼å ¥é¡µé¢çº§js end ===== --> 1738 1739 <!-- ===== å¼å ¥èæ¬ start ===== --> 1740 1741 1742 1743 <!-- ===== å¼å ¥èæ¬ end =====--> 1744 1745 1746 1747 1748 1749 <!--æç´¢ç¹å»--> 1750
1750<script> 1751 const searchButton = document.getElementById('halo-search'); 1752 searchButton.addEventListener('click', function () { 1753 SearchWidget.open(); 1754 }); 1755 </script>
1755 1756 <!-- 大å¾é ç½®--> 1757 1758 1759 1760 1761 </body> 1762 1763</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.