diff --git a/src/framework/liteloader.cjs b/src/framework/liteloader.cjs index 4d7a04d9..07d70903 100644 --- a/src/framework/liteloader.cjs +++ b/src/framework/liteloader.cjs @@ -1,5 +1,5 @@ //LiteLoader需要提供部分IPC接口,以便于其他插件调用 -const { ipcMain } = require('electron'); +const { ipcMain, BrowserWindow } = require('electron'); const napcat = require('./napcat.cjs'); const { shell } = require('electron'); ipcMain.handle('napcat_get_webtoken', async (event, arg) => { @@ -13,4 +13,14 @@ ipcMain.handle('napcat_get_reactweb', async (event, arg) => { let port = url.port; let token = url.searchParams.get('token'); return `https://napcat.152710.xyz/web_login?back=http://127.0.0.1:${port}&token=${token}`; +}); + +ipcMain.on('napcat_open_inner_url', (event, url) => { + const win = new BrowserWindow({ + autoHideMenuBar: true, + }); + win.loadURL(url); + win.webContents.setWindowOpenHandler(details => { + win.loadURL(details.url) + }) }); \ No newline at end of file diff --git a/src/framework/preload.cjs b/src/framework/preload.cjs index 5cef7534..c910f53e 100644 --- a/src/framework/preload.cjs +++ b/src/framework/preload.cjs @@ -6,6 +6,9 @@ const napcat = { openExternalUrl: async (url) => { ipcRenderer.send('open_external_url', url); }, + openInnerUrl: async (url) => { + ipcRenderer.send('napcat_open_inner_url', url); + }, getWebUiUrlReact: async () => { return ipcRenderer.invoke('napcat_get_reactweb'); } diff --git a/src/framework/renderer.js b/src/framework/renderer.js index 1f9d531d..dc7cce6b 100644 --- a/src/framework/renderer.js +++ b/src/framework/renderer.js @@ -24,7 +24,7 @@ export const onSettingWindowCreated = async (view) => { `; view.querySelector('.nc_openwebui').addEventListener('click', () => { - window.open(webui, '_blank'); + window.napcat.openInnerUrl(webui); }); view.querySelector('.nc_openwebui_ex').addEventListener('click', () => { window.napcat.openExternalUrl(webui);