1document.addEventListener('DOMContentLoaded', () => { 2 const encryption = str => window.btoa(unescape(encodeURIComponent(str))); 3 const decrypt = str => decodeURIComponent(escape(window.atob(str))); 4 5 /* å½å页çCID */ 6 const cid = $('.joe_detail').attr('data-cid'); 7 window.cid = cid; 8 9 /* è·åæ¬ç¯æç« ç¾åº¦æ¶å½æ åµ */ 10 { 11 if (document.getElementById('Joe_Baidu_Record')) { 12 $.ajax({ 13 url: Joe.BASE_API, 14 type: 'POST', 15 dataType: 'json', 16 data: { 17 routeType: 'baidu_record', 18 site: window.location.href, 19 cid: cid 20 }, 21 success(res) { 22 if (!res.data) { 23 if (Joe.BAIDU_PUSH) { 24 $('#Joe_Baidu_Record').html(`<a href="javascript:submit_baidu();" rel="noopener noreferrer nofollow" style="color: #F56C6C">æ£æµå¤±è´¥ï¼æäº¤æ¶å½</a>`); 25 return 26 } 27 const url = `https://ziyuan.baidu.com/linksubmit/url?sitename=${encodeURI(window.location.href)}`; 28 $('#Joe_Baidu_Record').html(`<a target="_blank" href="${url}" rel="noopener noreferrer nofollow" style="color: #F56C6C">æ£æµå¤±è´¥ï¼æäº¤æ¶å½</a>`); 29 return 30 } 31 if (res.data == 'æªæ¶å½ï¼å·²æ¨é') { 32 $('#Joe_Baidu_Record').css('color', '#67C23A'); 33 $('#Joe_Baidu_Record').html(res.data); 34 return 35 } 36 if (res.data == 'å·²æ¶å½') { 37 $('#Joe_Baidu_Record').css('color', '#67C23A'); 38 $('#Joe_Baidu_Record').html('å·²æ¶å½'); 39 return 40 } 41 /* 妿填åäºTokenï¼åèªå¨æ¨éç»ç¾åº¦ */ 42 if ((res.data == 'æªæ¶å½') && (Joe.BAIDU_PUSH)) { 43 submit_baidu('æªæ¶å½ï¼æ¨éä¸...'); 44 return 45 } 46 if (Joe.BAIDU_PUSH) { 47 $('#Joe_Baidu_Record').html(`<a href="javascript:submit_baidu();" rel="noopener noreferrer nofollow" style="color: #F56C6C">${res.data}ï¼æäº¤æ¶å½</a>`); 48 return 49 } 50 const url = `https://ziyuan.baidu.com/linksubmit/url?sitename=${encodeURI(window.location.href)}`; 51 $('#Joe_Baidu_Record').html(`<a target="_blank" href="${url}" rel="noopener noreferrer nofollow" style="color: #F56C6C">${res.data}ï¼æäº¤æ¶å½</a>`); 52 } 53 }); 54 } 55 56 } 57 58 /* æ¿æ´»ä»£ç é«äº® */ 59 { 60 Prism.highlightAll(); 61 $("pre[class*='language-']").each(function (index, item) { 62 let text = $(item).find("code[class*='language-']").text().replace(/ /g, ' '); 63 let span = $(`<span data-toggle="tooltip" data-placement="top" title="ç¹å»å¤å¶" class="copy"><i class="fa fa-clone"></i></span>`); 64 if (!Joe.IS_MOBILE) { 65 span.tooltip({ 66 container: "body" 67 }); 68 span.on('click', function (event) { 69 $(this).tooltip('hide'); 70 }); 71 } 72 new ClipboardJS(span[0], { 73 text: () => text 74 }).on('success', () => { 75 window.code_copy = true; 76 Qmsg.success(`å¤å¶æå å 容çæå±äº ${Joe.TITLE} è½¬è½½è¯·æ æåºå¤ï¼`, { 'showClose': true, 'autoClose': false }); 77 }); 78 $(item).append(span); 79 }); 80 } 81 82 /* çå¬ç½é¡µå¤å¶è¡ä¸º */ 83 { 84 // è·åææå ·æç±»å "joe_detail__article" çå ç´ 85 const articleElements = document.querySelectorAll('.joe_detail__article'); 86 // éåæ¯ä¸ªå ç´ ï¼æ·»å å¤å¶äºä»¶çå¬ 87 articleElements.forEach(article => { 88 article.addEventListener('copy', (event) => { 89 // è·å被å¤å¶çå ç´ 90 // const copiedElement = event.target; 91 if (window.code_copy !== true && window.post_copy !== true) { 92 Qmsg.warning(`æ¬æçæå±äº ${Joe.TITLE} è½¬è½½è¯·æ æåºå¤ï¼`, { 93 'showClose': true, 94 'autoClose': false 95 }); 96 window.post_copy = true; 97 } 98 window.code_copy = false; 99 }); 100 }); 101 } 102 103 /* æ¿æ´»å¾çé¢è§åè½ */ 104 { 105 $('.joe_detail__article img:not(img.owo_image)[fancybox!="false"]').each(function () { 106 $(this).wrap($( 107 `<span style="display: block;" data-fancybox="Joe" href="${$(this).attr('src')}"></span>` 108 )); 109 }); 110 } 111 112 /* æ¿æ´»æµè§åè½ */ 113 { 114 let viewsArr = localStorage.getItem(encryption('views')) ? JSON.parse(decrypt(localStorage.getItem( 115 encryption('views')))) : []; 116 const flag = viewsArr.includes(cid); 117 if (!flag) { 118 $.ajax({ 119 url: Joe.BASE_API, 120 type: 'POST', 121 dataType: 'json', 122 data: { 123 routeType: 'handle_views', 124 cid 125 }, 126 success(res) { 127 if (res.code !== 1) return; 128 $('#Joe_Article_Views').html(res.data.views); 129 viewsArr.push(cid); 130 const name = encryption('views'); 131 const val = encryption(JSON.stringify(viewsArr)); 132 localStorage.setItem(name, val); 133 } 134 }); 135 } 136 } 137 138 /* æ¿æ´»æç« ç¹èµåè½ */ 139 { 140 let agreeArr = localStorage.getItem(encryption('agree')) ? JSON.parse(decrypt(localStorage.getItem( 141 encryption('agree')))) : []; 142 if (agreeArr.includes(cid)) { 143 $('.action-like').addClass('active'); 144 $('.action-like>text').text('å·²èµ'); 145 } else { 146 $('.action-like').removeClass('active'); 147 $('.action-like>text').text('ç¹èµ'); 148 } 149 let _loading = false;
150 $('.action-like').on('click', function () { 151 if (_loading) return; 152 _loading = true; 153 agreeArr = localStorage.getItem(encryption('agree')) ? JSON.parse(decrypt(localStorage 154 .getItem(encryption('agree')))) : []; 155 let flag = agreeArr.includes(cid); 156 $.ajax({ 157 url: Joe.BASE_API, 158 type: 'POST', 159 dataType: 'json', 160 data: { 161 routeType: 'handle_agree', 162 cid, 163 type: flag ? 'disagree' : 'agree' 164 }, 165 beforeSend: function () { 166 $('.action-like').css('pointer-events', 'none').find('count').html('<i class="loading zts"></i>'); 167 }, 168 success(res) { 169 if (res.code !== 1) return; 170 $('.action-like>count').html(res.data.agree); 171 if (flag) { 172 const index = agreeArr.findIndex(_ => _ === cid); 173 agreeArr.splice(index, 1); 174 $('.action-like').removeClass('active'); 175 $('.action-like>text').text('ç¹èµ'); 176 Qmsg.info('ç¹èµå·²åæ¶'); 177 } else { 178 agreeArr.push(cid); 179 $('.action-like').addClass('active'); 180 $('.action-like>text').text('å·²èµ'); 181 Qmsg.success('å·²èµï¼æè°¢æ¨çæ¯æï¼'); 182 } 183 const name = encryption('agree'); 184 const val = encryption(JSON.stringify(agreeArr)); 185 localStorage.setItem(name, val); 186 $('.action-like').css('pointer-events', '') 187 }, 188 complete() { 189 _loading = false; 190 } 191 }); 192 }); 193 } 194 195 /* å¯ç ä¿æ¤æç« ï¼è¾å ¥å¯ç è®¿é® */ 196 { 197 let isSubmit = false; 198 $('.joe_detail__article-protected').on('submit', function (e) { 199 e.preventDefault(); 200 const url = $(this).attr('action') + '&time=' + +new Date(); 201 const protectPassword = $(this).find('input[type="password"]').val(); 202 if (protectPassword.trim() === '') return Qmsg.info('请è¾å ¥è®¿é®å¯ç ï¼'); 203 if (isSubmit) return; 204 isSubmit = true; 205 $.ajax({ 206 url, 207 type: 'POST', 208 data: { 209 cid, 210 protectCID: cid, 211 protectPassword 212 }, 213 dataType: 'text', 214 success(res) { 215 let arr = [], 216 str = ''; 217 arr = $(res).contents(); 218 Array.from(arr).forEach(_ => { 219 if (_.parentNode.className === 'container') str = _; 220 }); 221 if (!/Joe/.test(res)) { 222 Qmsg.warning(str.textContent.trim() || ''); 223 isSubmit = false; 224 $('.joe_comment__respond-form .foot .submit button').html('å表è¯è®º'); 225 } else { 226 location.reload(); 227 } 228 } 229 }); 230 }); 231 } 232 233 /* æ¿æ´»æç« è§é¢æ¨¡å */ 234 { 235 if ($('.joe_detail__article-video').length > 0) { 236 window.videoPlayer = new DPlayer({ 237 container: document.querySelector('.joe_detail__article-video>.dplayer-video'), // ææ¾å¨å®¹å¨å ç´ 238 autoplay: true, // è§é¢èªå¨ææ¾ 239 theme: getComputedStyle(document.documentElement).getPropertyValue('--theme').trim(), // 主é¢è² 240 lang: 'zh-cn', // å¯éå¼: 'en', 'zh-cn', 'zh-tw' 241 preload: 'auto', // è§é¢é¢å è½½ï¼å¯éå¼: 'none', 'metadata', 'auto' 242 loop: false, // è§é¢å¾ªç¯ææ¾ 243 screenshot: true, // å¼å¯æªå¾ï¼å¦æå¼å¯ï¼è§é¢åè§é¢å°é¢éè¦å 许跨å 244 airplay: true, // å¨ Safari ä¸å¼å¯ AirPlay 245 volume: 1, // é»è®¤é³éï¼è¯·æ³¨æææ¾å¨ä¼è®°å¿ç¨æ·è®¾ç½®ï¼ç¨æ·æå¨è®¾ç½®é³éåé»è®¤é³éå³å¤±æ 246 playbackSpeed: [2.00, 1.75, 1.50, 1.25, 1.00, 0.75, 0.50, 0.25], // å¯éçææ¾éçï¼å¯ä»¥è®¾ç½®æèªå®ä¹çæ°ç» 247 video: { 248 pic: Joe.CONTENT.cover 249 } 250 }); 251 $('.featured-video-episode>.switch-video').on('click', function () { 252 $(this).addClass('active').siblings().removeClass('active'); 253 const url = $(this).attr('video-url'); 254 let title = $(this).attr('data-original-title'); 255 videoPlayer.switchVideo({ url: url }); 256 if (title) $('.joe_detail__article-video>.title').html(title); 257 }); 258 $('.featured-video-episode>.switch-video').first().click(); 259 const next = () => { 260 let item = document.querySelector('.featured-video-episode>.switch-video.active'); 261 if (item.nextSibling) item.nextSibling.nextElementSibling.click(); 262 } 263 videoPlayer.on('ended', () => { 264 next(); 265 }); 266 videoPlayer.on('loadeddata', () => { 267 if (videoPlayer.video.paused) { 268 videoPlayer.play(); 269 } 270 if (videoPlayer.video.paused) { 271 console.log(videoPlayer.video.paused); 272 videoPlayer.video.play(); 273 } 274 }); 275 videoPlayer.on('error', () => { 276 if (!videoPlayer.video.error) { 277 // 䏿¯è§é¢å è½½é误ï¼å¯è½æ¯æµ·æ¥å 载失败ï¼è¯·åé #307 278 return; 279 } 280 console.log('è§é¢å 载失败ï¼' + videoPlayer.video.src); 281 next(); 282 }); 283 } 284 } 285 286 /* å享 */ 287 { 288 // if ($('.joe_detail__operate-share').length) { 289 // $('.joe_detail__operate-share > svg').on('click', e => { 290 // e.stopPropagation(); 291 // $('.joe_detail__operate-share').toggleClass('active'); 292 // }); 293 // $(document).on('click', () => $('.joe_detail__operate-share').removeClass('active')); 294 // } 295 } 296}); 297 298/* åå¨loadäºä»¶éï¼ä¸ºäºè§£å³å¾çæªå è½½å®æï¼æ»å¨è·ç¦»è·åä¼ä¸åç¡®çé®é¢ */ 299window.addEventListener('load', function () {
300 /* 夿å°åæ æ¯å¦æéç¹é¾æ¥ï¼æå跳转å°å¯¹åºä½ç½® */ 301 { 302 const scroll = new URLSearchParams(location.search).get('scroll'); 303 if (scroll) { 304 let elementEL = null; 305 if ($('#' + scroll).length > 0) { 306 elementEL = $('#' + scroll); 307 } else { 308 elementEL = $('.' + scroll); 309 } 310 if (elementEL && elementEL.length > 0) { 311 const top = elementEL.offset().top - $('.joe_header').height() - 15; 312 window.scrollTo({ 313 top, 314 behavior: 'smooth' 315 }); 316 } 317 } 318 } 319}); 320 321function submit_baidu(msg = 'æ¨éä¸...') { 322 $('#Joe_Baidu_Record').html(`<span style="color: #E6A23C">${msg}</span>`); 323 $.ajax({ 324 url: Joe.BASE_API, 325 type: 'POST', 326 dataType: 'json', 327 data: { 328 routeType: 'baidu_push', 329 domain: window.location.protocol + '//' + window 330 .location.hostname, 331 url: encodeURI(window.location.href), 332 cid: window.cid 333 }, 334 success(res) { 335 if (res.already) { 336 $('#Joe_Baidu_Record').css('color', '#67C23A'); 337 $('#Joe_Baidu_Record').html('å·²æ¨é'); 338 return 339 } 340 if (res.data.error) { 341 if (res.data.message == 'over quota') res.data.message = 'è¶ è¿é é¢'; 342 $('#Joe_Baidu_Record').html('<span style="color: #F56C6C">æ¨é失败ï¼' + res.data.message + '</span>'); 343 } else { 344 $('#Joe_Baidu_Record').html('<span style="color: #67C23A">æ¨éæåï¼ä»æ¥å©ä½' + res.data.remain + 'æ¡</span>'); 345 } 346 }, 347 error(res) { 348 $('#Joe_Baidu_Record').html('<span style="color: #F56C6C">æ¨é失败ï¼è¯·æ£æ¥ï¼</span>'); 349 } 350 }); 351 // 顺便æ¨éURLå°å¿ åº 352 if (!Joe.BING_PUSH) return; 353 $.ajax({ 354 url: Joe.BASE_API, 355 type: 'POST', 356 dataType: 'json', 357 data: { 358 routeType: 'bing_push', 359 domain: window.location.protocol + '//' + window 360 .location.hostname, 361 url: encodeURI(window.location.href) 362 } 363 }); 364}
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.