mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-05-13 23:16:47 +00:00
feature:
不蒜子调整
This commit is contained in:
17
components/Busuanzi.js
Normal file
17
components/Busuanzi.js
Normal file
@@ -0,0 +1,17 @@
|
||||
import busuanzi from '@/lib/busuanzi'
|
||||
import { useRouter } from 'next/router'
|
||||
import { useEffect } from 'react'
|
||||
|
||||
export default function Busuanzi () {
|
||||
const router = useRouter()
|
||||
useEffect(() => {
|
||||
const busuanziRouteChange = url => {
|
||||
busuanzi.fetch()
|
||||
}
|
||||
router.events.on('routeChangeComplete', busuanziRouteChange)
|
||||
return () => {
|
||||
router.events.off('routeChangeComplete', busuanziRouteChange)
|
||||
}
|
||||
}, [router.events])
|
||||
return null
|
||||
}
|
||||
29
components/GoogleAdsense.js
Normal file
29
components/GoogleAdsense.js
Normal file
@@ -0,0 +1,29 @@
|
||||
import { useRouter } from 'next/router'
|
||||
import { useEffect } from 'react'
|
||||
|
||||
export default function GoogleAdsense () {
|
||||
const initGoogleAdsense = () => {
|
||||
const ads = document.getElementsByClassName('adsbygoogle').length
|
||||
const newAdsCount = ads
|
||||
if (newAdsCount > 0) {
|
||||
for (let i = 0; i <= newAdsCount; i++) {
|
||||
try {
|
||||
// eslint-disable-next-line no-undef
|
||||
(adsbygoogle = window.adsbygoogle || []).push({})
|
||||
} catch (e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const router = useRouter()
|
||||
useEffect(() => {
|
||||
initGoogleAdsense()
|
||||
router.events.on('routeChangeComplete', initGoogleAdsense)
|
||||
return () => {
|
||||
router.events.off('routeChangeComplete', initGoogleAdsense)
|
||||
}
|
||||
}, [router.events])
|
||||
return null
|
||||
}
|
||||
@@ -5,12 +5,12 @@ import * as gtag from '@/lib/gtag'
|
||||
const Gtag = () => {
|
||||
const router = useRouter()
|
||||
useEffect(() => {
|
||||
const handleRouteChange = url => {
|
||||
const gtagRouteChange = url => {
|
||||
gtag.pageview(url)
|
||||
}
|
||||
router.events.on('routeChangeComplete', handleRouteChange)
|
||||
router.events.on('routeChangeComplete', gtagRouteChange)
|
||||
return () => {
|
||||
router.events.off('routeChangeComplete', handleRouteChange)
|
||||
router.events.off('routeChangeComplete', gtagRouteChange)
|
||||
}
|
||||
}, [router.events])
|
||||
return null
|
||||
|
||||
@@ -37,6 +37,13 @@ const ThirdPartyScript = () => {
|
||||
/>
|
||||
</>)}
|
||||
|
||||
{/* 不蒜子
|
||||
{BLOG.analytics.busuanzi && (
|
||||
<script async
|
||||
src={'//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js'}
|
||||
/>
|
||||
)} */}
|
||||
|
||||
{/* 代码统计 */}
|
||||
{BLOG.isProd && (<>
|
||||
|
||||
@@ -63,12 +70,6 @@ const ThirdPartyScript = () => {
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
{/* 不蒜子 */}
|
||||
{BLOG.analytics.busuanzi && (
|
||||
<script async
|
||||
src={'//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js'}
|
||||
/>
|
||||
)}
|
||||
|
||||
{/* 站长统计 */}
|
||||
{BLOG.analytics.cnzzAnalytics && (
|
||||
|
||||
92
lib/busuanzi.js
Normal file
92
lib/busuanzi.js
Normal file
@@ -0,0 +1,92 @@
|
||||
/* eslint-disable */
|
||||
let bszCaller, bszTag, scriptTag, ready
|
||||
|
||||
let t; let e; let n; let a = !1
|
||||
let c = []
|
||||
|
||||
// 修复Node同构代码的问题
|
||||
if (typeof document !== 'undefined') {
|
||||
ready = function (t) {
|
||||
return a || document.readyState === 'interactive' || document.readyState === 'complete'
|
||||
? t.call(document)
|
||||
: c.push(function () {
|
||||
return t.call(this)
|
||||
}), this
|
||||
}, e = function () {
|
||||
for (let t = 0, e = c.length; t < e; t++) c[t].apply(document)
|
||||
c = []
|
||||
}, n = function () {
|
||||
a || (a = !0, e.call(window),
|
||||
document.removeEventListener ? document.removeEventListener('DOMContentLoaded', n, !1) : document.attachEvent && (document.detachEvent('onreadystatechange', n), window == window.top && (clearInterval(t), t = null)))
|
||||
}, document.addEventListener
|
||||
? document.addEventListener('DOMContentLoaded', n, !1)
|
||||
: document.attachEvent && (document.attachEvent('onreadystatechange', function () {
|
||||
/loaded|complete/.test(document.readyState) && n()
|
||||
}), window == window.top && (t = setInterval(function () {
|
||||
try {
|
||||
a || document.documentElement.doScroll('left')
|
||||
} catch (t) {
|
||||
return
|
||||
}
|
||||
n()
|
||||
}, 5)))
|
||||
}
|
||||
|
||||
bszCaller = {
|
||||
fetch: function (t, e) {
|
||||
const n = 'BusuanziCallback_' + Math.floor(1099511627776 * Math.random())
|
||||
t = t.replace('=BusuanziCallback', '=' + n)
|
||||
scriptTag = document.createElement('SCRIPT'), scriptTag.type = 'text/javascript', scriptTag.defer = !0, scriptTag.src = t, scriptTag.referrerPolicy = "no-referrer-when-downgrade", document.getElementsByTagName('HEAD')[0].appendChild(scriptTag)
|
||||
window[n] = this.evalCall(e)
|
||||
},
|
||||
evalCall: function (e) {
|
||||
return function (t) {
|
||||
ready(function () {
|
||||
try {
|
||||
e(t), scriptTag && scriptTag.parentElement && scriptTag.parentElement.removeChild && scriptTag.parentElement.removeChild(scriptTag)
|
||||
} catch (t) {
|
||||
console.log(t), bszTag.hides()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const fetch = () => {
|
||||
bszTag && bszTag.hides()
|
||||
bszCaller.fetch('//busuanzi.ibruce.info/busuanzi?jsonpCallback=BusuanziCallback', function (t) {
|
||||
// console.log('不蒜子请求结果',t)
|
||||
bszTag.texts(t), bszTag.shows()
|
||||
})
|
||||
}
|
||||
|
||||
bszTag = {
|
||||
bszs: ['site_pv', 'page_pv', 'site_uv'],
|
||||
texts: function (n) {
|
||||
this.bszs.map(function (t) {
|
||||
const e = document.getElementById('busuanzi_value_' + t)
|
||||
e && (e.innerHTML = n[t])
|
||||
})
|
||||
},
|
||||
hides: function () {
|
||||
this.bszs.map(function (t) {
|
||||
const e = document.getElementById('busuanzi_container_' + t)
|
||||
e && (e.style.display = 'none')
|
||||
})
|
||||
},
|
||||
shows: function () {
|
||||
this.bszs.map(function (t) {
|
||||
const e = document.getElementById('busuanzi_container_' + t)
|
||||
e && (e.style.display = 'inline')
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// 修复Node同构代码的问题
|
||||
if (typeof document !== 'undefined') {
|
||||
fetch()
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
fetch
|
||||
}
|
||||
@@ -2,7 +2,6 @@ import lang from './lang'
|
||||
import { useContext, createContext, useState, useEffect } from 'react'
|
||||
import cookie from 'react-cookies'
|
||||
import Router from 'next/router'
|
||||
|
||||
const GlobalContext = createContext()
|
||||
|
||||
/**
|
||||
@@ -104,28 +103,6 @@ const initTheme = (theme, changeTheme) => {
|
||||
}
|
||||
}
|
||||
|
||||
export function handleRouteChange (url) {
|
||||
initGoogleAdsense()
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化谷歌广告
|
||||
*/
|
||||
function initGoogleAdsense () {
|
||||
const ads = document.getElementsByClassName('adsbygoogle').length
|
||||
const newAdsCount = ads
|
||||
if (newAdsCount > 0) {
|
||||
for (let i = 0; i <= newAdsCount; i++) {
|
||||
try {
|
||||
// eslint-disable-next-line no-undef
|
||||
(adsbygoogle = window.adsbygoogle || []).push({})
|
||||
} catch (e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取默认主题
|
||||
* @returns {*}
|
||||
|
||||
@@ -6,29 +6,17 @@ import 'rc-dropdown/assets/index.css'
|
||||
import 'prismjs/themes/prism-okaidia.css'
|
||||
import 'katex/dist/katex.min.css'
|
||||
import dynamic from 'next/dynamic'
|
||||
import { GlobalContextProvider, handleRouteChange } from '@/lib/global'
|
||||
import { useEffect } from 'react'
|
||||
import { useRouter } from 'next/router'
|
||||
import { GlobalContextProvider } from '@/lib/global'
|
||||
import { config } from '@fortawesome/fontawesome-svg-core'
|
||||
import '@fortawesome/fontawesome-svg-core/styles.css'
|
||||
config.autoAddCss = false
|
||||
|
||||
const Ackee = dynamic(() => import('@/components/Ackee'), { ssr: false })
|
||||
const Gtag = dynamic(() => import('@/components/Gtag'), { ssr: false })
|
||||
const Busuanzi = dynamic(() => import('@/components/Busuanzi'), { ssr: false })
|
||||
const GoogleAdsense = dynamic(() => import('@/components/GoogleAdsense'), { ssr: false })
|
||||
|
||||
const MyApp = ({ Component, pageProps }) => {
|
||||
// 全局监听路由变化
|
||||
const router = useRouter()
|
||||
useEffect(() => {
|
||||
handleRouteChange(router.pathname)
|
||||
const routerListener = (url) => {
|
||||
handleRouteChange(url)
|
||||
}
|
||||
router.events.on('routeChangeComplete', routerListener)
|
||||
return () => {
|
||||
router.events.off('routeChangeComplete', routerListener)
|
||||
}
|
||||
})
|
||||
return (
|
||||
<GlobalContextProvider>
|
||||
{BLOG.isProd && BLOG?.analytics?.provider === 'ackee' && (
|
||||
@@ -38,6 +26,8 @@ const MyApp = ({ Component, pageProps }) => {
|
||||
/>
|
||||
)}
|
||||
{BLOG.isProd && BLOG?.analytics?.provider === 'ga' && <Gtag />}
|
||||
{BLOG.analytics.busuanzi && <Busuanzi/>}
|
||||
{BLOG.googleAdsenseId && <GoogleAdsense/>}
|
||||
<Component {...pageProps} />
|
||||
</GlobalContextProvider>
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user