乐闻世界logo
搜索文章和话题

How to get the url of the BrowserWindow in Electron?

4 个月前提问
3 个月前修改
浏览次数26

1个答案

1

在 Electron 中,获取当前浏览器窗口的 URL 可以通过几种不同的方法实现,具体取决于你的应用架构和需求。这里我将提供一个常见的实现方式,假设你正在使用 BrowserWindow 来创建窗口,并且窗口中加载了一个 web 页面。

首先,你需要在渲染进程中使用 webContents 模块,这个模块提供了与网页内容交互的功能,包括获取当前页面的 URL。以下是一个具体的实现步骤:

步骤 1: 在主进程中创建窗口

首先,在 Electron 的主进程中创建一个浏览器窗口,并加载一个网页。这可以通过 BrowserWindow 类实现。

javascript
// 在主进程中 const { app, BrowserWindow } = require('electron'); function createWindow() { // 创建浏览器窗口 let win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, contextIsolation: false // 注意安全设置,根据需要调整 } }); // 并加载应用的 index.html win.loadFile('index.html'); // 打开开发者工具 win.webContents.openDevTools(); } app.whenReady().then(createWindow);

步骤 2: 在渲染进程中获取 URL

在渲染进程的 JavaScript 文件中,你可以使用 webContentsgetURL() 方法来获取当前加载的 URL。

javascript
// 在渲染进程中 const { remote } = require('electron'); document.getElementById('check-url').addEventListener('click', () => { const webContents = remote.getCurrentWindow().webContents; const url = webContents.getURL(); console.log('当前窗口的 URL 是:', url); });

在这个例子中,我们添加了一个按钮,当用户点击时,会触发事件监听器,从而获取当前窗口的 URL 并打印到控制台。

注意事项

  • 在 Electron 10 及以上版本中,默认禁用了 remote 模块,因为它可能导致性能和安全问题。如果你使用的是 Electron 10 或更高版本,你可能需要启用 remote 模块或使用其他方法(如 IPC 通信)来实现相同的功能。
  • 总是考虑到安全问题,尤其是当开启 nodeIntegration 和禁用 contextIsolation 时,这可能会让你的应用暴露在远程执行代码的风险下。

这就是一个基本的实现过程,通过这个流程,你可以在 Electron 应用中获取和使用当前浏览器窗口的 URL。

2024年6月29日 12:07 回复

你的答案