Browse Source

:art: https://github.com/siyuan-note/siyuan/issues/7054

Vanessa 2 years ago
parent
commit
e14e8749c9
3 changed files with 15 additions and 10 deletions
  1. 11 0
      app/electron/main.js
  2. 1 0
      app/src/constants.ts
  3. 3 10
      app/src/protyle/export/index.ts

+ 11 - 0
app/electron/main.js

@@ -660,6 +660,17 @@ app.whenReady().then(() => {
   ipcMain.on('siyuan-export-close', (event, id) => {
     BrowserWindow.fromId(id).webContents.send('siyuan-export-close', id)
   })
+  ipcMain.on('siyuan-export-prevent', (event, id) => {
+    BrowserWindow.fromId(id).webContents.on('will-navigate', (event, url) => {
+      const currentURL = new URL(event.sender.getURL())
+      if (url.startsWith(getServer(currentURL.port))) {
+        return
+      }
+
+      event.preventDefault()
+      shell.openExternal(url)
+    })
+  })
   ipcMain.on('siyuan-quit', (event, id) => {
     const mainWindow = BrowserWindow.fromId(id)
     let tray

+ 1 - 0
app/src/constants.ts

@@ -31,6 +31,7 @@ export abstract class Constants {
     public static readonly SIYUAN_SAVE_CLOSE: string = "siyuan-save-close";
     public static readonly SIYUAN_EXPORT_PDF: string = "siyuan-export-pdf";
     public static readonly SIYUAN_EXPORT_CLOSE: string = "siyuan-export-close";
+    public static readonly SIYUAN_EXPORT_PREVENT: string = "siyuan-export-prevent";
 
     // size
     public static readonly SIZE_TOOLBAR_HEIGHT: number = 42;

+ 3 - 10
app/src/protyle/export/index.ts

@@ -1,7 +1,7 @@
 import {hideMessage, showMessage} from "../../dialog/message";
 import {Constants} from "../../constants";
 /// #if !BROWSER
-import {OpenDialogReturnValue, shell} from "electron";
+import {OpenDialogReturnValue, ipcRenderer} from "electron";
 import {app, BrowserWindow, dialog, getCurrentWindow} from "@electron/remote";
 import * as fs from "fs";
 import * as path from "path";
@@ -451,9 +451,8 @@ const renderPDF = (id: string) => {
         renderPreview(response.data.content);
     });
 </script></body></html>`;
-    const mainWindow = getCurrentWindow();
     window.siyuan.printWin = new BrowserWindow({
-        parent: mainWindow,
+        parent: getCurrentWindow(),
         modal: true,
         show: true,
         width: 1032,
@@ -469,13 +468,7 @@ const renderPDF = (id: string) => {
             webSecurity: false,
         },
     });
-    window.siyuan.printWin.webContents.on('will-navigate', (event, url) => {
-        if (url.indexOf(location.host) > -1) {
-            return
-        }
-        event.preventDefault()
-        shell.openExternal(url)
-    })
+    ipcRenderer.send(Constants.SIYUAN_EXPORT_PREVENT, window.siyuan.printWin.id);
     window.siyuan.printWin.webContents.userAgent = `SiYuan/${app.getVersion()} https://b3log.org/siyuan Electron`;
     fetchPost("/api/export/exportTempContent", {content: html}, (response) => {
         window.siyuan.printWin.loadURL(response.data.url);