diff --git a/src/disqus.js b/src/disqus.js
index 5c03395..1dce5f1 100644
--- a/src/disqus.js
+++ b/src/disqus.js
@@ -298,7 +298,7 @@
let getComment = (cursor) => {
let $loadMoreBtn = $$('dsqjs-load-more'),
$orderRadio = d.getElementsByClassName('dsqjs-order-radio');
- $loadHideCommentInDisqus = d.getElementsByClassName('dsqjs-has-more-btn');
+ $loadHideCommentInDisqus = d.getElementsByClassName('dsqjs-has-more-btn');
let getMoreComment = () => {
// 为按钮们取消事件,避免重复绑定
@@ -546,21 +546,26 @@
* @return {string} msg - 经过处理的评论信息
*/
let removeDisqUs = (msg) => {
- // aMatcher - 只处理 Disqus 短链接
- let aMatcher = new RegExp(/(.+?)<\/a>/gi),
- hrefMatcher = new RegExp(/href=\"(.+?)\"/gi)
- let link = (msg.match(aMatcher) || []);
- link.map((olink) => {
- // (.*) 是贪婪处理,会一致匹配到最后,可以用于匹配最后一次
- let link = olink.match(hrefMatcher)[0].replace(/href=\"https:\/\/disq.us\/url\?url=/g, '').replace(/(.*)"/, '$1');
- link = decodeURIComponent(link);
- link = link.replace(/(.*):(.*)cuid=(.*)/, '$1')
- msg = msg.replace(olink, `${link}`)
- })
-
- // 在最后添加 target="_blank" 可以生效到全局链接(包括 Disqus CDN 直链)
- msg = msg.replace(/href=/g, `target="_blank" href=`)
- return msg
+ let el = document.createElement('div');
+ el.innerHTML = msg;
+ let aTag = el.getElementsByTagName('a');
+ for (let i of aTag) {
+ let link = i.href;
+ /*
+ link = link.replace(/https:\/\/disq.us\/url\?url=/g, '').replace(/(.*)"/, '$1');
+ link = decodeURIComponent(link);
+ link = link.replace(/(.*):(.*)cuid=(.*)/, '$1')
+ */
+ link = decodeURIComponent(link.replace(/https:\/\/disq.us\/url\?url=/g, '').replace(/(.*)"/, '$1')).replace(/(.*):(.*)cuid=(.*)/, '$1');
+ i.href = link;
+ i.innerHTML = link;
+ // 为所有链接添加 nofollow noopener noreferrer 可以生效到全局链接(包括 Disqus CDN 直链)
+ i.rel = 'nofollow noopener noreferrer'
+ // 为所有链接添加 target="_blank" 可以生效到全局链接(包括 Disqus CDN 直链)
+ i.target = '_blank'
+ }
+
+ return el.innerHTML;
}
let renderPostItem = (s) => {