6.Electron之BrowserView嵌入子视图

简介: 6.Electron之BrowserView嵌入子视图

一、核心代码

app.on('ready', () => { //app初始化参数
    mainWindow = new BrowserWindow({
        windth: 1200,
        height: 800,
        webPreferences: {
            nodeIntegration: true, //使用node功能
            contextIsolation: false,
            enableRemoteModule: true
        }
    })
    mainWindow.webContents.openDevTools() //默认打开调试模式    
    mainWindow.loadFile('index.html') //打开窗口加载的页面
 
    let BrowserView=electron.BrowserView 
    let view=new BrowserView //创建子视图
    mainWindow.setBrowserView(view) //将子视图嵌入到父窗口
    view.setBounds({  //设置坐标、宽度、长度
        x:0,
        y:50,
        width:1000,
        height:600
    })
 
    view.webContents.loadURL("https://up.enterdesk.com/photo/2008-6-13/200806131108306030.jpg") //设置子窗口加载的链接
    mainWindow.on('close', () => { //窗口关闭时,释放页面
        mainWindow = null
    })
})

二、全部代码

index.js

const electron = require('electron') //引入electron组件
var app = electron.app //引入组件app
var BrowserWindow = electron.BrowserWindow //窗口引用
 
var mainWindow = null //申明打开窗口
 
app.on('ready', () => { //app初始化参数
    mainWindow = new BrowserWindow({
        windth: 1200,
        height: 800,
        webPreferences: {
            nodeIntegration: true, //使用node功能
            contextIsolation: false,
            enableRemoteModule: true
        }
    })
    mainWindow.webContents.openDevTools() //默认打开调试模式    
    mainWindow.loadFile('index.html') //打开窗口加载的页面
 
    let BrowserView=electron.BrowserView 
    let view=new BrowserView //创建子视图
    mainWindow.setBrowserView(view) //将子视图嵌入到父窗口
    view.setBounds({  //设置坐标、宽度、长度
        x:0,
        y:50,
        width:1000,
        height:600
    })
 
    view.webContents.loadURL("https://up.enterdesk.com/photo/2008-6-13/200806131108306030.jpg") //设置子窗口加载的链接
    mainWindow.on('close', () => { //窗口关闭时,释放页面
        mainWindow = null
    })
})

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>
</head>
 
<body>
    <button id="mybtn">打开子窗口</button>
    <script src="./render/index.js"></script>
</body>
 
</html>

/render/index.js

var mybtn = document.querySelector('#mybtn')
mybtn.onclick = function (e) {
    window.open("https://www.baidu.com")
}

三、测试

相关文章
|
前端开发 算法 API
直接在前端做 zip 压缩/解压
前段时间研究前端是如何解析 excel 表格的时候了解到 jszip 这个库,可以直接在前端对 zip 包进行压缩和解压缩,今天稍微水一篇。
|
11月前
|
JavaScript 前端开发 算法
Vue 与 React 深度对比:底层原理、开发体验与实际性能
本文深入对比Vue 3/Vue 4与React 19的核心原理、性能差异与开发体验。Vue基于Proxy响应式与编译优化,追求自动高效;React依托虚拟DOM、Fiber架构与并发渲染,强调灵活可控。两者在更新粒度、语法范式、学习曲线和生态上各有优劣。Vue适合快速开发与中小型项目,React更适配复杂交互与高定制需求。未来Vue趋向信号机制与Vapor Mode,React发力服务端组件与自动记忆化。选择应基于团队能力、项目场景与维护成本,追求技术适配性而非先进性。
1710 7
|
前端开发 JavaScript API
electron多标签页模式更像客户端
electron多标签页模式更像客户端
1526 7
electron多标签页模式更像客户端
|
11月前
|
JSON API 开发者
如何通过API获取1688平台商品详情
本文介绍如何通过1688开放平台API获取商品详情,涵盖API概述、认证流程、请求示例及Python代码实现,助开发者高效集成商品数据到应用中,适用于电商、ERP等场景。(238字)
|
Linux 虚拟化 iOS开发
VMware Fusion 13.6.4 发布 - 领先的免费桌面虚拟化软件
VMware Fusion 13.6.4 for Mac - 领先的免费桌面虚拟化软件
4997 1
VMware Fusion 13.6.4 发布 - 领先的免费桌面虚拟化软件
|
消息中间件 中间件 Kafka
MQ四兄弟:如何实现延时消息
本文介绍了几种常见的消息队列系统(RabbitMQ、RocketMQ、Kafka和Pulsar)实现延时消息的方式。RabbitMQ通过死信队列或延时插件实现;RocketMQ内置延时消息支持,可通过设置`delayTimeLevel`属性实现;Kafka不直接支持延时消息,但可以通过时间戳、延时Topic、Kafka Streams等方法间接实现;Pulsar自带延时消息功能,提供`deliverAfter`和`deliverAt`两种方式。每种方案各有优劣,适用于不同的应用场景。
1963 0
|
监控 JavaScript 前端开发
Vue3组合式函数(监听DOM尺寸 useResizeObserver)
本文介绍如何使用 `ResizeObserver` API 编写 Vue3 的通用组合式函数 `useResizeObserver`,该函数可方便地观察一个或多个元素的尺寸变化,并执行指定回调。`ResizeObserver` 接口用于监控 `Element` 或 `SVGElement` 的尺寸变化,避免了无限回调循环问题。
1554 0
Vue3组合式函数(监听DOM尺寸 useResizeObserver)
|
JavaScript 前端开发 数据安全/隐私保护
雪球JS逆向:阿里系加密acw_sc__v2和反debugger
雪球JS逆向:阿里系加密acw_sc__v2和反debugger
3822 1
Crypto-JS——Uncaught Error: Malformed UTF-8 data
Crypto-JS——Uncaught Error: Malformed UTF-8 data
1893 0

热门文章

最新文章