Files
NotionNext/lib/plugins/busuanzi.js
2024-08-29 00:16:00 +08:00

146 lines
3.7 KiB
JavaScript

/* eslint-disable */
let bszCaller, bszTag, scriptTag, ready
let intervalId;
let executeCallbacks;
let onReady;
let isReady = false;
let callbacks = [];
// 修复Node同构代码的问题
if (typeof document !== 'undefined') {
ready = function (callback) {
if (isReady || document.readyState === 'interactive' || document.readyState === 'complete') {
callback.call(document);
} else {
callbacks.push(function () {
return callback.call(this);
});
}
return this;
};
executeCallbacks = function () {
for (let i = 0, len = callbacks.length; i < len; i++) {
callbacks[i].apply(document);
}
callbacks = [];
};
onReady = function () {
if (!isReady) {
isReady = true;
executeCallbacks.call(window);
if (document.removeEventListener) {
document.removeEventListener('DOMContentLoaded', onReady, false);
} else if (document.attachEvent) {
document.detachEvent('onreadystatechange', onReady);
if (window == window.top) {
clearInterval(intervalId);
intervalId = null;
}
}
}
};
if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', onReady, false);
} else if (document.attachEvent) {
document.attachEvent('onreadystatechange', function () {
if (/loaded|complete/.test(document.readyState)) {
onReady();
}
});
if (window == window.top) {
intervalId = setInterval(function () {
try {
if (!isReady) {
document.documentElement.doScroll('left');
}
} catch (e) {
return;
}
onReady();
}, 5);
}
}
}
bszCaller = {
fetch: function (url, callback) {
const callbackName = 'BusuanziCallback_' + Math.floor(1099511627776 * Math.random())
url = url.replace('=BusuanziCallback', '=' + callbackName)
scriptTag = document.createElement('SCRIPT');
scriptTag.type = 'text/javascript';
scriptTag.defer = true;
scriptTag.src = url;
scriptTag.referrerPolicy = "no-referrer-when-downgrade";
document.getElementsByTagName('HEAD')[0].appendChild(scriptTag);
window[callbackName] = this.evalCall(callback)
},
evalCall: function (callback) {
return function (data) {
ready(function () {
try {
callback(data);
if (scriptTag && scriptTag.parentElement && scriptTag.parentElement.contains(scriptTag)) {
scriptTag.parentElement.removeChild(scriptTag);
}
} catch (e) {
// console.log(e);
// bszTag.hides();
}
})
}
}
}
const fetch = () => {
if (bszTag) {
bszTag.hides();
}
bszCaller.fetch('//busuanzi.ibruce.info/busuanzi?jsonpCallback=BusuanziCallback', function (data) {
// console.log('不蒜子',data)
bszTag.texts(data);
bszTag.shows();
})
}
bszTag = {
bszs: ['site_pv', 'page_pv', 'site_uv'],
texts: function (data) {
this.bszs.map(function (key) {
const elements = document.getElementsByClassName('busuanzi_value_' + key)
if (elements) {
for (var element of elements) {
element.innerHTML = data[key];
}
}
})
},
hides: function () {
this.bszs.map(function (key) {
const elements = document.getElementsByClassName('busuanzi_container_' + key)
if (elements) {
for (var element of elements) {
element.style.display = 'none';
}
}
})
},
shows: function () {
this.bszs.map(function (key) {
const elements = document.getElementsByClassName('busuanzi_container_' + key)
if (elements) {
for (var element of elements) {
element.style.display = 'inline';
}
}
})
}
}
module.exports = {
fetch
}