Electron学习 第八章

系列文章目录

创建子窗口,并通过子窗口向父窗口传递信息


一、创建窗口页面

1、主窗口页面 index.html
代码如下(示例):

通过连接打开浏览器 百度 点击打开子窗口
div
<!-- 引入对应的js文件 -->
<script src="../js/demo03.js"></script>

2、子窗口页面 poppage.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>PopPage</title>
</head>
<body>
    <h2>弹出的子窗口</h2>
    <button id="popbtn">向父窗口传递信息</button>

    <script>
        var popbtn = this.document.querySelector('#popbtn')
        popbtn.onclick = function(e){
        // popbtn.onclick = ()=>{
            window.opener.postMessage('我是子窗口传递过来的的信息')
        }
    </script>
</body>
</html>

3、主进程代码 main.js
代码如下(示例):

// main.js
const electron = require("electron")
const app = electron.app
const BrowserWindow = electron.BrowserWindow

// 声明要打开的窗口
let mainWindow = null

app.on("ready",()=>{
    mainWindow = new BrowserWindow({
        width:800,
        height:800,
        webPreferences:{
            nodeIntegration:true, //开启node接口
            contextIsolation:false,
            webviewTag:true,
            worldSafeExecuteJavaScript: false,
            nodeIntegrationInWorker: true,
            webSecurity: false,
            enableRemoteModule: true
        }
    });

    // 打开新窗口 BrosweWindow 初始化
    require('@electron/remote/main').initialize();
       require("@electron/remote/main").enable(mainWindow.webContents);  
    // 打开调试工具
    mainWindow.webContents.openDevTools();
    mainWindow.loadFile("./index.html"); 
})

// 当所有窗口被关闭了,退出。
app.on('window-all-closed', function() {
    if (process.platform != 'darwin') {
      app.quit();
    }
});


4、渲染进程代码 render.js
代码如下(示例):

const {shell} = require("electron");
// 打开子窗口,相当于创建新窗口
// window.open 打开子窗口
let mybtn =  document.querySelector("#mybtn")
mybtn.onclick = () =>{
    // 打开网页
    // window.open("https://www.bilibili.com")
    // 打开指定的 html 文件
    window.open("../html/poppage.html")
}


window.addEventListener('message',(msg)=>{
    let mytext =document.querySelector('#mytext')//渲染层中的id为text的div组件现在名字叫text
    mytext.innerHTML=JSON.stringify(msg.data)//只把msg中的data字段赋值给text,传回给div
})

二、实现效果

1. 打开子窗口

在这里插入图片描述

2. 子窗口向父窗口传递信息

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值