我有一个奇怪的问题。在我的应用程序中,很少有链接到其他.html文件。在Mac OS或Windows 7上,链接在同一个窗口中打开,但在Windows 10中,它们在新窗口中打开。我不知道是怎么回事...也许你知道?链接看起来像(没有什么不同):
<a href="page.html?id={{ id }}">Some link</a>
envsm3lx1#
我不知道在你的应用程序中打开新窗口是怎么回事,所以这不会导致你的问题。但是,假设您的窗口是由恶意的window.open调用(或target="_blank”)创建的,您可以阻止新窗口事件并加载您的win,如下所示:
win.webContents.on('new-window', (event, url) => { event.preventDefault() win.loadURL(url) })
在此查看更多详情
5rgfhyps2#
我在触摸屏Linux设备上运行的Electron/Vue.js应用程序也遇到了同样的问题,触摸链接有时会在新窗口中打开它。Jann 3的答案是有效的,但会导致重新加载Vue应用程序,这会带来很多延迟。我发现了一个Electron的变通方法,就是简单地从Electron的主进程向渲染器进程发送一条消息,在本例中使用Vue的路由器。同样的逻辑应该适用于渲染器进程中使用的任何东西:电子主流程:
win = new BrowserWindow({ ... }) win.webContents.on('new-window', (event, url) => { event.preventDefault() win.webContents.send('blocked-new-window', url) })
Vue路由器.js:
require('electron').ipcRenderer.on('blocked-new-window', (event, url) => { router.push({path: url.split('#/')[1] || '/'}) })
以下是有关在主进程和渲染器进程之间发送消息的详细信息:https://electronjs.org/docs/api/web-contents#contentssendchannel-arg1-arg2-
jckbn6z73#
这已从电子中删除,见:www.example.com网站。https://www.electronjs.org/docs/latest/breaking-changes#planned-breaking-api-changes-220.您现在可以使用www.example.com。https://www.electronjs.org/docs/latest/api/web-contents#contentssetwindowopenhandlerhandler.
mainWindow.webContents.setWindowOpenHandler((details) => { return { action: 'deny' } });
3条答案
按热度按时间envsm3lx1#
我不知道在你的应用程序中打开新窗口是怎么回事,所以这不会导致你的问题。
但是,假设您的窗口是由恶意的window.open调用(或target="_blank”)创建的,您可以阻止新窗口事件并加载您的win,如下所示:
在此查看更多详情
5rgfhyps2#
我在触摸屏Linux设备上运行的Electron/Vue.js应用程序也遇到了同样的问题,触摸链接有时会在新窗口中打开它。Jann 3的答案是有效的,但会导致重新加载Vue应用程序,这会带来很多延迟。
我发现了一个Electron的变通方法,就是简单地从Electron的主进程向渲染器进程发送一条消息,在本例中使用Vue的路由器。同样的逻辑应该适用于渲染器进程中使用的任何东西:
电子主流程:
Vue路由器.js:
以下是有关在主进程和渲染器进程之间发送消息的详细信息:https://electronjs.org/docs/api/web-contents#contentssendchannel-arg1-arg2-
jckbn6z73#
这已从电子中删除,见:www.example.com网站。https://www.electronjs.org/docs/latest/breaking-changes#planned-breaking-api-changes-220.
您现在可以使用www.example.com。https://www.electronjs.org/docs/latest/api/web-contents#contentssetwindowopenhandlerhandler.