在Electron中加载网站和html文件

问题描述 投票:0回答:2

所以我是电子新手,对于我的第一个项目,我决定为浏览器游戏做一个简单的客户端。本质上我想做的是加载网站,然后在其上方添加一些 HTML 以添加某些功能,例如关闭/最小化/最大化,以及一个不是默认 Windows 的导航栏。

我遇到的问题是我似乎无法加载该网站及其上面的 HTML(如果可能的话)。有人可以帮我解决这个问题吗?

const { app, BrowserWindow /* ipcMain */ } = require('electron')
const path = require('path')

function createWindow () {
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    frame: false,
    
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })
mainWindow.loadURL('https://bapbap.gg')
}



/*win.loadFile('index.html')*/

app.whenReady().then(() => {
  createWindow()

  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow()
    }
  })
})

/*
ipcMain.on('close', () => {
  app.quit()
})
*/

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

javascript html electron
2个回答
2
投票

这是可能的。

index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <div>
        <button>Minimize</button>
        <button>Maximize</button>
        <button>Close</button>
    </div>
    <webview src="https://bapbap.gg"></webview>
</body>

</html>

index.js

const { app, BrowserWindow, /* ipcMain */ 
webContents} = require("electron");
const path = require("path");



function createWindow() {
    const win = new BrowserWindow({
        width: 800,
        height: 600,
        frame: false,

        webPreferences: {
            webviewTag: true,
        },
    });

    win.loadFile("index.html");
}

app.whenReady().then(() => {
    createWindow();

    app.on("activate", () => {
        if (BrowserWindow.getAllWindows().length === 0) {
            createWindow();
        }
    });
});

/*
ipcMain.on('close', () => {
  app.quit()
})
*/

样式.css

body {
    display: flex;
    flex-direction: column;
    margin: 0;
    height: 100vh;
}

webview {
    flex: 1;
}


0
投票

为了保持线程最新,我建议阅读 Electron 文档中的 Web Embeds 页面。 Electron 不推荐接受的答案。 https://www.electronjs.org/docs/latest/tutorial/web-embeds

我目前正在开发一个专为 Raspberry Pi 设计的 Kiosk 应用程序,它同样只显示另一个网页。您可以依靠 BrowserWindow 或 BaseWindow 的构造函数选项中的本机应用程序窗口结构来处理应用程序控制(最大/最小/关闭)。见下文

const mainWindow = new BaseWindow({
    width: 1920,
    height: 1080
});
const view = new WebContentsView();

// Put your URL in here
view.webContents.loadURL("https://bapbap.gg");

// This expands the WebContentsView to the max bounds of the BaseWindow parent.
view.setBounds(mainWindow.getBounds());

// Now add it to the BaseWindow parent
mainWindow.contentView.addChildView(view);
© www.soinside.com 2019 - 2024. All rights reserved.