diff --git a/src/renderer/components/DefaultPreviewer.vue b/src/renderer/components/DefaultPreviewer.vue index 4b008fbbc..2796b2fe8 100644 --- a/src/renderer/components/DefaultPreviewer.vue +++ b/src/renderer/components/DefaultPreviewer.vue @@ -31,13 +31,14 @@
TOP
- + @@ -53,6 +54,7 @@ import { disableSyncScrollAwhile, getHeadings, getViewDom, Heading, print, scrol import { showExport } from '@fe/services/document' import { useI18n } from '@fe/services/i18n' import type { AppState } from '@fe/support/store' +import { useToast } from '@fe/support/ui/toast' import { getEditor } from '@fe/services/editor' import DefaultPreviewerRender from './DefaultPreviewerRender.ce.vue' @@ -83,6 +85,7 @@ const todoCount = ref(0) const todoDoneCount = ref(0) const scrollTop = ref(0) const pinOutline = ref(false) +const iframeVisible = ref(true) const heads = ref([]) const refPreviewer = ref(null) @@ -93,6 +96,14 @@ function onLoad (iframe: HTMLIFrameElement) { const contentWindow = iframe.contentWindow! contentWindow.addEventListener('scroll', handleScroll) + contentWindow.addEventListener('beforeunload', () => { + logger.warn('iframe beforeunload') + iframeVisible.value = false + useToast().show('warning', 'IFrame Error!') + setTimeout(() => { + iframeVisible.value = true + }, 3000) + }) container.value = contentDocument.getElementById('app')! as HTMLIFrameElement