From e134a73215e64c5752ee79dd89674a0e4c277a18 Mon Sep 17 00:00:00 2001 From: SukkaW <isukkaw@gmail.com> Date: Tue, 5 Nov 2019 10:10:23 +0800 Subject: [PATCH] feat/refactor: not to support old browser --- src/disqus.js | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/src/disqus.js b/src/disqus.js index 2f52dc2..2b316eb 100644 --- a/src/disqus.js +++ b/src/disqus.js @@ -110,7 +110,7 @@ function DisqusJS(config) { /* 如需完整体验请针对 disq.us | disquscdn.com | disqus.com 启用代理并 <a id="dsqjs-reload-disqus" class="dsqjs-msg-btn">尝试完整 Disqus 模式</a> | <a id="dsqjs-force-disqus" class="dsqjs-msg-btn">强制完整 Disqus 模式</a> */ - askForFull: '如需完整体验请针对 disq.us | disquscdn.com | disqus.com 启用代理并 <a id="dsqjs-reload-disqus" class="dsqjs-msg-btn">尝试完整 Disqus 模式</a> | <a id="dsqjs-force-disqus" class="dsqjs-msg-btn">强制完整 Disqus 模式</a>' + askForFull: '如需完整体验请针对 disq.us | disquscdn.com | disqus.com 启用代理并 <a id="dsqjs-reload-disqus" class="dsqjs-msg-btn">尝试完整 Disqus 模式</a> | <a id="dsqjs-force-disqus" class="dsqjs-msg-btn">强制完整 Disqus 模式</a>' } /** @@ -210,7 +210,7 @@ function DisqusJS(config) { // 显示提示信息 // Disqus 加载成功以后会把 #disqus_thread 内的内容全部覆盖 - $$('disqus_thread').innerHTML = `<div id="dsqjs"><section><div id="dsqjs-msg">评论完整模式加载中...如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理,或切换至 <a id="dsqjs-force-dsqjs" class="dsqjs-msg-btn">评论基础模式</a></div></section>${htmlTpl.footer}` + $$('disqus_thread').innerHTML = `<div id="dsqjs"><section><div id="dsqjs-msg">评论完整模式加载中...如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理,或切换至 <a id="dsqjs-force-dsqjs" class="dsqjs-msg-btn">评论基础模式</a></div></section>${htmlTpl.footer}</div>` $$('dsqjs-force-dsqjs').addEventListener('click', useDsqjs); s.src = `https://${disqusjs.config.shortname}.disqus.com/embed.js`; @@ -703,6 +703,7 @@ function DisqusJS(config) { identifier: document.location.origin + document.location.pathname + document.location.search, url: document.location.origin + document.location.pathname + document.location.search, title: document.title, + siteName: '', nesting: parseInt(config.nesting) || 4 }, config); @@ -721,25 +722,36 @@ function DisqusJS(config) { this.page.title = disqusjs.config.title; }; - - disqusjs.mode = localStorage.getItem('dsqjs_mode'); - disqusjs.sortType = localStorage.getItem('dsqjs_sort') || localStorage.getItem('disqus.sort'); - // 填充 DisqusJS 的 Container $$('disqus_thread').innerHTML = `<div id="dsqjs">${htmlTpl.msg}${htmlTpl.footer}</div>` - if (!disqusjs.sortType) { - setLS('dsqjs_sort', 'desc'); - disqusjs.sortType = 'desc'; + function initDsqjs() { + disqusjs.mode = localStorage.getItem('dsqjs_mode'); + disqusjs.sortType = localStorage.getItem('dsqjs_sort') || localStorage.getItem('disqus.sort'); + + if (!disqusjs.sortType) { + setLS('dsqjs_sort', 'desc'); + disqusjs.sortType = 'desc'; + } + if (disqusjs.mode === 'disqus') { + loadDisqus(); + } else if (disqusjs.mode === 'dsqjs') { + loadDsqjs(); + } else { + // 没有在 localStorage 中找到 disqusjs_mode 相关内容,开始检查访客的 Disqus 可用性 + // 也作为不支持 localStorage 的浏览器的 fallback + checkDisqus(); + } } - if (disqusjs.mode === 'disqus') { - loadDisqus(); - } else if (disqusjs.mode === 'dsqjs') { - loadDsqjs(); + + // 引入 Fetch 以后,一堆浏览器将不再被支持,所以加个判断,劝退一些浏览器 + if (!fetch || !localStorage) { + msg('你的浏览器不兼容评论基础模式。' + htmlTpl.askForFull); + + $$('dsqjs-reload-disqus').addEventListener('click', checkDisqus); + $$('dsqjs-force-disqus').addEventListener('click', useDsqjs); } else { - // 没有在 localStorage 中找到 disqusjs_mode 相关内容,开始检查访客的 Disqus 可用性 - // 也作为不支持 localStorage 的浏览器的 fallback - checkDisqus(); + initDsqjs(); } })(window, document, localStorage); }