fix: bilibili reload (#603)

This commit is contained in:
Bowen
2024-01-25 12:19:51 +08:00
committed by GitHub
parent 2e8911db57
commit e28ec22caf
3 changed files with 23 additions and 1 deletions
@@ -1,9 +1,11 @@
import { cropText } from '../../../utils'
import { cropText, waitForElementToExistAndSelect } from '../../../utils'
import { config } from '../index.mjs'
export default {
init: async (hostname, userConfig, getInput, mountComponent) => {
try {
// B站页面是SSR的,如果插入过早,页面 js 检测到实际 Dom 和期望 Dom 不一致,会导致重新渲染
await waitForElementToExistAndSelect('img.bili-avatar-img')
let oldUrl = location.href
const checkUrlChange = async () => {
if (location.href !== oldUrl) {
+1
View File
@@ -18,3 +18,4 @@ export * from './parse-int-with-clamp'
export * from './set-element-position-in-viewport'
export * from './eventsource-parser.mjs'
export * from './update-ref-height'
export * from './wait-for-element-to-exist-and-select.mjs'
@@ -0,0 +1,19 @@
export function waitForElementToExistAndSelect(selector) {
return new Promise((resolve) => {
if (document.querySelector(selector)) {
return resolve(document.querySelector(selector))
}
const observer = new MutationObserver(() => {
if (document.querySelector(selector)) {
resolve(document.querySelector(selector))
observer.disconnect()
}
})
observer.observe(document.body, {
subtree: true,
childList: true,
})
})
}