mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-25 08:01:20 -08:00
refactor(iframe): [PKG-IFRAME-03] scope requests to active documents
This commit is contained in:
1 parent
b8cdafedd1
commit
1342de94ef
27 files changed
+10860
-69
No files matched your search
@@ -1,4 +1,5 @@
|
||||
import type { Packet, RequestHost } from './requests'
|
||||
import { createNavigation } from './navigation'
|
||||
import { cancelRequests } from './requests'
|
||||
|
||||
interface ConnectionHost extends RequestHost {
|
||||
@@ -11,9 +12,29 @@ const connections = new WeakMap<ConnectionHost, () => void>()
|
||||
export function connect(host: ConnectionHost): void {
|
||||
const owner = window
|
||||
const receiver = host.onMessage
|
||||
connections.set(host, () => owner.removeEventListener('message', receiver))
|
||||
const cleanups = [() => owner.removeEventListener('message', receiver)]
|
||||
connections.set(host, () => {
|
||||
let failed = false
|
||||
let failure: unknown
|
||||
for (const cleanup of cleanups) {
|
||||
try {
|
||||
cleanup()
|
||||
}
|
||||
catch (error) {
|
||||
if (!failed) {
|
||||
failed = true
|
||||
failure = error
|
||||
}
|
||||
}
|
||||
}
|
||||
if (failed)
|
||||
throw failure
|
||||
})
|
||||
owner.addEventListener('message', receiver)
|
||||
host.$iframe.src = host.url
|
||||
const navigation = createNavigation(host)
|
||||
cleanups.push(navigation.dispose)
|
||||
navigation.start()
|
||||
}
|
||||
|
||||
export function releaseConnection(host: ConnectionHost): void {
|
||||
|
||||
Reference in new issue
Block a user