优化:优化 API 服务调用

This commit is contained in:
2022-11-30 22:39:09 +08:00
parent 699e469c60
commit 94eacb25a6
3 changed files with 30 additions and 14 deletions

View File

@@ -27,17 +27,33 @@ export const head: HeadConfig[] = [
s.parentNode.insertBefore(hm, s);
})();`],
// 页面访问量统计
['script', {}, `var pageUrl = location.href;
(function() {
['script', {}, `
window.addEventListener('load', function() {
let oldHref = document.location.href, bodyDOM = document.querySelector('body');
const observer = new MutationObserver(function(mutations) {
if (oldHref != document.location.href) {
oldHref = document.location.href;
getPv()
window.requestAnimationFrame(function() {
let tmp = document.querySelector('body');
if(tmp != bodyDOM) {
bodyDOM = tmp;
observer.observe(bodyDOM, config);
}
})
}
});
const config = {
childList: true,
subtree: true
};
observer.observe(bodyDOM, config);
getPv()
}, true);
function getPv() {
xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.charles7c.top/blog/pv?pageUrl=' + pageUrl + "&t=" + new Date().getTime());
xhr.open('GET', 'https://api.charles7c.top/blog/pv?pageUrl=' + location.href);
xhr.send();
})();`]
/*['script', {}, `var pageUrl = location.href;
(function() {
var pv = document.createElement("script");
pv.src = "https://api.charles7c.top/blog/pv?pageUrl=" + pageUrl;
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(pv, s);
})();`]*/
}`]
]

View File

@@ -1,6 +1,6 @@
import { request } from './config'
export const getPv = (id, pageUrl, call) => {
export const getArticleViewCount = (id, pageUrl, call) => {
request.get(`/article/view/${id}?pageUrl=${pageUrl}`, {}).then(result => {
call(process(result))
})
@@ -14,4 +14,4 @@ function process(result) {
}
}
export default { getPv }
export default { getArticleViewCount }

View File

@@ -83,7 +83,7 @@ const { author, authorLink, showViewCount, viewCount, date, toDate, categories,
if (data.showViewCount) {
// 记录并获取文章阅读数(使用文章标题 + 发布时间生成 MD5 值,作为文章的唯一标识)
onMounted(() => {
$api.getPv(md5(props.article.title + props.article.date), location.href, function(viewCountData) {
$api.getArticleViewCount(md5(props.article.title + props.article.date), location.href, function(viewCountData) {
data.viewCount = viewCountData
})
})