Skip to content

Commit 9cf5bdb

Browse files
committed
fix: adjust event handling and performance for Vue settled events
1 parent 15eb343 commit 9cf5bdb

2 files changed

Lines changed: 15 additions & 9 deletions

File tree

userscript/source/index.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,12 @@ export async function RunNamuLinkUserscript(BrowserWindow: typeof window, Usersc
4545
})
4646

4747
const ArticleHTMLElement = await WaitForElement('#app', BrowserWindow.document)
48+
const EventName = 'vue:settled'
49+
const ChangeEventName = 'vue:change'
4850
AttachVueSettledEvents(ArticleHTMLElement, {
49-
QuietMs: 250,
50-
EventName: 'vue:settled',
51-
ChangeEventName: 'vue:change'
51+
QuietMs: 75,
52+
EventName: EventName,
53+
ChangeEventName: ChangeEventName
5254
})
5355

5456
const OCRInstance = CreateOcrWorkerClient(BrowserWindow, new Worker(URL.createObjectURL(new Blob([__OCR_WORKER_CODE__], { type: 'application/javascript' }))))
@@ -92,7 +94,7 @@ export async function RunNamuLinkUserscript(BrowserWindow: typeof window, Usersc
9294
return SetHTMLElement
9395
}
9496

95-
ArticleHTMLElement.addEventListener('vue:settled', async () => {
97+
async function Handler(EventParameter: Event) {
9698
let Targeted = [...document.querySelectorAll('#app div[class] div[class] ~ div[class]')].filter(Ele => Ele instanceof HTMLElement)
9799
Targeted = Targeted.filter(Ele =>
98100
parseFloat(getComputedStyle(Ele).getPropertyValue('padding-top')) >= 20 ||
@@ -127,7 +129,7 @@ export async function RunNamuLinkUserscript(BrowserWindow: typeof window, Usersc
127129
Targeted.forEach(Ele => Targeted.push(...new Set([...Ele.querySelectorAll('*')].filter(Child => Child instanceof HTMLElement))))
128130
Targeted = [...new Set(Targeted)]
129131
let RealTargeted = Targeted.filter(Ele => parseFloat(getComputedStyle(Ele).getPropertyValue('padding-left')) >= 5 && parseFloat(getComputedStyle(Ele).getPropertyValue('border-right-width')) >= 0.1)
130-
console.debug(`[${UserscriptName}] vue:settled RealTargeted`, RealTargeted)
132+
console.debug(`[${UserscriptName}] ${EventParameter.type} RealTargeted`, RealTargeted, EventParameter)
131133
RealTargeted.forEach(Ele => {
132134
Ele.style.setProperty('display', 'none', 'important')
133135
})
@@ -136,7 +138,7 @@ export async function RunNamuLinkUserscript(BrowserWindow: typeof window, Usersc
136138
let Children = [...Ele.querySelectorAll('*')].filter(Child => Child instanceof HTMLElement)
137139
return Children.some(Child => parseFloat(getComputedStyle(Child).getPropertyValue('padding-top')) >= 5 && parseFloat(getComputedStyle(Child).getPropertyValue('padding-bottom')) >= 5)
138140
})
139-
console.debug(`[${UserscriptName}] vue:settled RealTabletTargeted`, RealTabletTargeted)
141+
console.debug(`[${UserscriptName}] ${EventParameter.type} RealTabletTargeted`, RealTabletTargeted, EventParameter)
140142
RealTabletTargeted.forEach(Ele => {
141143
Ele.style.setProperty('display', 'none', 'important')
142144
})
@@ -147,11 +149,13 @@ export async function RunNamuLinkUserscript(BrowserWindow: typeof window, Usersc
147149
let Parents = [...AllParents(PlaceHolder)].filter(Ele => Ele.innerText.trim().length === 0)
148150
Parents.forEach(Ele => PlaceHolderCandidated.add(Ele))
149151
})
150-
console.debug(`[${UserscriptName}] vue:settled PlaceHolderCandidated`, PlaceHolderCandidated);
152+
console.debug(`[${UserscriptName}] ${EventParameter.type} PlaceHolderCandidated`, PlaceHolderCandidated, EventParameter);
151153
[...PlaceHolderCandidated].forEach(Ele => {
152154
Ele.style.setProperty('display', 'none', 'important')
153155
})
154-
})
156+
}
157+
158+
ArticleHTMLElement.addEventListener('vue:settled', (EventParameter) => Handler(EventParameter))
155159

156160
// init Naver Nanum fonts
157161
const FontAddr = [

userscript/source/vuejsawait.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ export function AttachVueSettledEvents(TargetEl: HTMLElement, Options: { QuietMs
5757
LastMutationAt = performance.now()
5858

5959
EmitChange(Mutations)
60-
ArmSettledTimer()
60+
if (Mutations.length >= 25) {
61+
ArmSettledTimer()
62+
}
6163
})
6264

6365
Observer.observe(TargetEl, {

0 commit comments

Comments
 (0)