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