3 - Electron app BrowserWindow对象-关于窗口

news2024/11/15 15:38:06

优雅的打开应用~

当加载缓慢,打开应用的一瞬间会出现白屏,以下方法可以解决

const mainWindow = new BrowserWindow({ show: false })
mainWindow.once('ready-to-show', () => {
  mainWindow.show()
})

设置背景颜色

const win = new BrowserWindow({ backgroundColor: '#2e2c29' })

定义多窗口

const createWindow = () => {
  const win = new BrowserWindow({
    width: 1000,
    height: 600,
  });
   win.loadFile("index.html");

   const win2 = new BrowserWindow({
    width: 600,
    height: 600,
  });
   win2.loadURL('https://www.csdn.net/')
};
创建了两个互不相干的窗口

定义父子窗口 

const createWindow = () => {
  const win = new BrowserWindow({
    width: 1000,
    height: 600,
  });
   win.loadFile("index.html");

   const win2 = new BrowserWindow({
    width: 600,
    height: 600,
    parent:win,//父窗口是win
  });
   win2.loadURL('https://www.csdn.net/')
};
  • 当不属于父子窗口时,拖动哪个窗口哪个窗口置顶 
  • 当属于父子窗口时,拖动窗口后,子窗口置顶,父窗口在下面 

frame属性

const createWindow = () => {
  const win = new BrowserWindow({
    width: 1000,
    height: 600,
    frame: false
  });
   win.loadFile("index.html");
};
frame:true
frame:false

 当frame:false时

  • 窗口不能拖动
  • 没有标题

用css解决窗口拖动方案

<style>
    html{
        height: 100%;
        user-select: none; //注意:使用这个之后不能使用其他控件、不能选中文本
        -webkit-app-region:drag;
      }
</style>

但是这时存在一些小bug,当我们想拖动滑动条时,还是拖拽的窗口。

input{
    -webkit-app-region:no-drag;
}

在你想拖拽的元素添加no-drag属性,就可以解决啦!

electron-win-state 保存窗口的状态

当用户拖拽窗口大小或位置,关闭应用后不会保留的;如果我们需要保存窗口状态可以试试下面插件

npm i electron-win-state   
const WinState=require('electron-win-state').default; 

const winState=new WinState({
  //初始化宽高
  defaultWidth:800, 
  defaultHeight:600,
})
const createWindow = () => {
  const win = new BrowserWindow({
    ...winState.winOptions, 
    //在这里定义的宽高位置都要删掉哦!
    // width: 1000,
    // height: 600,
    // x:100,
    // y:100,
    backgroundColor:'black',
  });
   win.loadFile("index.html");
   winState.manage(win);//在函数最下方写入
};

require('xxx').default

第一次接触这个有点疑惑,不明白什么意思,举个例子

//导出接口


export default function() {}
// 等效于:
function a() {};
export {a as default}; //意思是把a函数导出去

import、require、export、module.exports 混合使用详解_import module.exports-CSDN博客

did-finish-load 外部资源加载完毕,dom-ready DOM加载完毕

const wc = win.webContents;
wc.on("did-finish-load", () => {
  console.log("外部资源加载完毕");
});
wc.on("dom-ready", () => {
  console.log("DOM 加载完毕");
});

new-window

<div>
  <a target="_blank" href="https://placekitten.com/500/500"><h3>Kitten</h3></a>
</div>
<script>
wc.on('new-window', (e, url) => {
  e.preventDefault()
  console.log('DOM Ready')
})
</script>

context-menu : 右键上下文信息 

只要用户点击右键,我们就可以做一些操作

wc.on('context-menu', (e, params) => {
  console.log(`Context menu opened on: ${params.mediaType} at x:${params.x}, y:${params.y}`)
})

wc.on('context-menu', (e, params) => {
  console.log(`User seleted text: ${params.selectionText}`)
  console.log(`Selection can be copied: ${params.editFlags.canCopy}`)
})

executeJavaScript()

往页面中注入js

wc.on('context-menu', (e, params) => {
  //当我们点击右键时,往页面中注入一段js,表示我们选中的内容
  wc.executeJavaScript(`alert('${params.selectionText}')`)
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1324742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenHarmony应用开发环境搭建指南

OpenHarmony的应用开发主要是基于Deveco Studio&#xff08;目前只支持Windows及Mac平台&#xff09;搭配相应的SDK进行&#xff0c;现对开发环境的搭建进行说明。 1:Deveco下载安装 下载对应平台的安装包即可。接下来以Windows平台为例&#xff0c;进行开发环境的搭建。 下载…

C#文件操作(一)

一、前言 学习心得&#xff1a;C# 入门经典第8版书中的第20章《文件》 二、操作文件的相关类 在C#应用程序中Syste.IO名称空间包含用于在文件中读写数据的类。在此我列举一下File、Directory、Path、FileInfo、DirectoryInfo、FileSystemInfo、FileSystemWatcher。其中在Syste…

pnpm :无法加载文件 D:\nodejs\node_global\pnpm.ps1,因为在此系统上禁止运行脚本

目录 一、问题描述 二、原因分析 三、解决问题 一、问题描述 pnpm : 无法加载文件 D:\learningsoftware\nodejs\node_global\pnpm.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/?LinkID1351 70 中的 a…

文件包含 [SWPUCTF 2021 新生赛]include

打开题目 要求我们传入一个file进去&#xff0c;那我们get传入 /?file1 得到源码&#xff0c;并且提示我们flag在flag,php下 在源代码中&#xff0c;我们看见了allow_url_include函数&#xff0c;我们知道这涉及到文件包含。 一般默认allow_url_fopen是on的&#xff0c;那在…

线性回归中的似然函数、最大似然估计、最小二乘法怎么来的(让你彻底懂原理)收官之篇

图1 图2 图3 图4 问1&#xff1a;为什么要引入似然函数&#xff1f; 在线性回归中引入似然函数是为了通过概率统计的方法对模型参数进行估计。简单来说&#xff0c;我们希望找到一组参数&#xff0c;使得我们观测到的数据在给定这组参数的情况下最有可能发生。 问:1&#xf…

0155 - Java 数组

1 数组介绍 数组可以存放多个同一类型的数据。数组也是一种数据类型&#xff0c;是引用类型。 即&#xff1a;数(数据)组(一组)就是一组数据 2 数组的使用 2.1 使用方式一 2.2 使用方式二 3 数组使用注意事项和细节 数组是多个相同类型数据的组合&#xff0c;实现对这些数据…

Android Canvas状态save与restore,Kotlin

Android Canvas状态save与restore&#xff0c;Kotlin private fun f1() {val bitmap BitmapFactory.decodeResource(resources, R.mipmap.pic).copy(Bitmap.Config.ARGB_8888, true)val canvas Canvas(bitmap)val paint Paint(Paint.ANTI_ALIAS_FLAG)paint.color Color.RED…

信息收集 - 网站架构

网站架构组成 通常,一个典型的网站架构包括以下组件: 动态脚本语言:动态脚本语言用于处理网站的逻辑和动态内容生成。常见的动态脚本语言包括PHP、Python、Ruby和Node.js等。这些脚本语言可以根据用户请求生成动态的网页内容。 数据库:数据库用于存储网站的数据,包括用户…

网易面试:亿级用户,如何做微服务底层架构?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业网易、美团、字节、如阿里、滴滴、极兔、有赞、希音、百度、美团的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; 微服务改造&#xff0c;你是怎么做的&#xff1…

TransXNet实战:使用 TransXNet实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

路由表route

目录 Windows维护路由表&#xff0c;利用route命令&#xff0c;VPN完美异地组网什么是多网络环境这里我做个情景演示重置ipv4网络再次确认一下网络背景网关是什么多网络规划思路最后拓展内容实测一下网关切换选项网关的网关命令整理 Windows维护路由表&#xff0c;利用route命令…

补题与周总结:leetcode第 376 场周赛

文章目录 复盘与一周总结2967. 使数组成为等数数组的最小代价&#xff08;中位数贪心 回文数判断&#xff09;2968. 执行操作使频率分数最大&#xff08;中位数贪心 前缀和 滑窗&#xff09; 复盘与一周总结 wa穿了第3题&#xff0c;赛时其实想到了思路&#xff1a;中位数贪心…

中央空调冷却塔循环水全自动加药装置PH电导率设备工作原理动画

一&#xff1a;全自动加药装置【概述】 随着在给水、排水处理过程中&#xff0c;常常投加各类化学药剂作为阻垢、杀菌灭藻、混凝、絮凝用&#xff0c;以达到净化水的目的。这些药剂有固体颗粒、液体&#xff0c;在投加过程中必须溶解、稀释及按配比定量投加方能取得最佳效果&am…

GZ015 机器人系统集成应用技术样题6-学生赛

2023年全国职业院校技能大赛 高职组“机器人系统集成应用技术”赛项 竞赛任务书&#xff08;学生赛&#xff09; 样题6 选手须知&#xff1a; 本任务书共 25页&#xff0c;如出现任务书缺页、字迹不清等问题&#xff0c;请及时向裁判示意&#xff0c;并进行任务书的更换。参赛队…

DC-8靶场

目录 DC-8靶场链接&#xff1a; 首先进行主机发现&#xff1a; sqlmap得到账号密码&#xff1a; 反弹shell&#xff1a; exim4提权&#xff1a; Flag&#xff1a; DC-8靶场链接&#xff1a; https://www.five86.com/downloads/DC-8.zip 下载后解压会有一个DC-8.ova文件…

西门子S71200系列PLC通过PROFINET连接多功能电表

西门子S71200连接多功能电表 1、需求描述&#xff1a; 通过西门子S7-1200系列PLC&#xff0c;连接多功能电表&#xff0c;通过Modbus协议读写电表的数据。 2、方案描述&#xff1a; 桥接器的网口连接西门子S7-1200系列PLC的网口&#xff0c;串口连接到电表的485通讯口&#x…

反序列化 [SWPUCTF 2021 新生赛]ez_unserialize

打开题目 查看源代码 得到提示&#xff0c;那我们用御剑扫描一下看看 我们知道有个robots.txt&#xff0c;访问一下得到 那我们便访问一下 cl45s.php看看 得到网站源代码 <?phperror_reporting(0); show_source("cl45s.php");class wllm{public $admin;public …

Mysql的逻辑架构

一、Server层组件 1、连接器 连接器的作用是建立连接&#xff0c;管理权限&#xff0c;维持和管理连接 2、查询缓存 查询缓存的作用是以sql为key去查询缓存&#xff0c;如果缓存存在则直接返回结果 3、解析器 解析器的作用是对sql语句进行语法分析&#xff0c;和词法分析…

《深入理解计算机系统》学习笔记 - 第六课 - 机器级别的程序二

Lecture 06 Machine Level Programming II Control 机器级别程序控制二 文章目录 Lecture 06 Machine Level Programming II Control 机器级别程序控制二处理器的状态条件码&#xff08;隐式设置&#xff09;通过算术运算隐式设置条件码(将其视为副作用)通过cmp比较命令显示的设…

Python---TCP 的介绍

1. 网络应用程序之间的通信流程 之前我们学习了 IP 地址和端口号&#xff0c;通过 IP 地址能够找到对应的设备&#xff0c;然后再通过端口号找到对应的端口&#xff0c;再通过端口把数据传输给应用程序&#xff0c;这里要注意&#xff0c;数据不能随便发送&#xff0c;在发送之…