• electron窗口切换


    -

    通过菜单切换

    main.js

    const { app, BrowserWindow, Menu, MenuItem, shell } = require('electron')
    const path = require('path')
    // 保持一个对于 window 对象的全局引用,不然,当 JavaScript 被 GC,
    // window 会被自动地关闭
    var mainWindow = null;
    
    // 当所有窗口被关闭了,退出。
    app.on('window-all-closed', function() {
      // 在 OS X 上,通常用户在明确地按下 Cmd + Q 之前
      // 应用会保持活动状态
      if (process.platform != 'darwin') {
        app.quit();
      }
    });
    // 当 Electron 完成了初始化并且准备创建浏览器窗口的时候
    // 这个方法就被调用
    app.on('ready', function() {
      // 创建浏览器窗口。
      mainWindow = new BrowserWindow({
         800,
        height: 800,
        // frame: false, // windows下隐藏导航栏
        // titleBarStyle: 'hidden', // mac下隐藏导航栏
        webPreferences: {
          nodeIntegration: true, // 是否启用Node integration. 5.0以后默认值为 false.
          contextIsolation: false, // 设置为false后,才能在渲染进程使用Electron API
          preload: path.join(__dirname, 'preload.js')
        }
      });
    });
    
    // 设置系统菜单
    // 切换页面的函数
    const sendMenuEvent = (url) => {
      mainWindow.webContents.send('change-view', url);
    }
    const menuTemplate = [
      {
        label: '首页',
        click: async () => {
          //在electron窗口内打开首页
          mainWindow.loadURL(path.join(__dirname, 'index.html'));
        }
      },
      {
        label: '父级',
        submenu: [
          {
              label: 'electron窗口内打开百度',
              click: async () => {
                //在electron窗口内打开百度
                sendMenuEvent('http://www.baidu.com');
              },
          }, 
          {
            label: '默认浏览器打开百度',
            click: async () => {
              //在默认浏览器打开新的窗口
              await shell.openExternal('http://www.baidu.com');
            },
          }
        ]
      }
    ]
    const list = Menu.buildFromTemplate(menuTemplate)
    Menu.setApplicationMenu(list);

    preload.js

    const { ipcRenderer } = require('electron')
    // 在electron窗口内切换页面
    if(window && window.process && window.process.type === 'renderer') {
      ipcRenderer.on('change-view', (event, url) => {
        window.location.href = url;
      });
    }

    以上是用electron打开新窗口

    下面用js打开新窗口:

    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">
      <!-- 安全设置 -->
      <meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline';">
      <title>Document</title>
    </head>
    <body>
      <script>
        // js切换窗口
        baidu.addEventListener('click', () => {
          window.open('http://www.baidu.com', '_self')
        })
        // 在新窗口打开页面
        baidu2.addEventListener('click', () => {
          window.open('http://www.baidu.com', '_blank')
        })
      </script>
    </body>
    </html>

    效果:

     

    -

  • 相关阅读:
    【树形DP】ZJOI2008 骑士
    【博弈论】CF 1215D Ticket Game
    【状态压缩DP】HDU 4352 XHXJ'S LIS
    【纯水题】CF 833A The Meaningless Game
    【不知道怎么分类】NOIP2016 蚯蚓
    【状态压缩DP】SCOI2009 围豆豆
    操作系统总结
    概率问题总结
    C++虚函数原理
    一些baidu面经
  • 原文地址:https://www.cnblogs.com/fqh123/p/15782244.html
Copyright © 2020-2023  润新知