前端控制屏幕双屏显示 pos副屏 副屏方案

前端多屏幕适配的两套方案 在大屏开发中,最常遇到的就是多屏幕适配了。这里提供两套简单实用的方案。 一. 最外层元素增加 scale 这里的最外层元素指的是能包含所有页面的元素。我们可以给最外层元素设置固定的宽高,比如 1920 * 1080。一旦大屏的尺寸跟设定的不符合,则通过缩放相应的倍数来适配大屏。 具体代码如下: // 获取缩放倍率getScale = () => {    const  [width,&nbsp 阅读详情
AI摘要

本文介绍了一种使用Electron结合WebSocket实现在多显示器环境下,主屏与副屏间进行web界面同步显示的技术方案。通过Electron创建跨平台桌面应用,并利用WebSocket进行数据交换,解决了双屏显示的需求。

        之前在做到一个需求 电脑接了多个显示器  要在主屏上显示web界面   第二个屏幕上通过主屏来调起第二个界面 

        之前在网上看到的方案 :通过window.open(url, name, fulls)来打开浏览器 计算位置来放打开的界面 但是这个有兼容性 好像只在火狐生效 。 还有通过ActiveXObject 插件来控制啥的  我也不知道ActiveXObject是啥 反正我是没实现,文章来源js控制屏幕双屏显示

        面对这个需求 可能在店铺里面见得比较多  收银机之类的 前面收银员收钱的屏幕 背面还有个打广告 显示收款信息的屏幕 这样说应该比较好理解 现在看来纯web网页端实现多多少少会有问题(话不能说的太满容易打脸)哈哈   之后发现了新的方式 也就是我下面要讲的方式  通过c语言或者其他的语言 来做一个桌面端控件  让web网站来调起这个控件 通过websocket连接来打通它们的联络实现数据共享

         至于用什么语言来写桌面端的控件看你或者公司里人会用什么语言了,我只会前端所以接下来讲的会是用前端的东西来讲实现方案,下面列举了5中比较流行的框架,我用的第一种,毕竟咱前端流行开发工具 vscode工具也是来自它。

        时下最流行的5个用于桌面应用程序开发的 JS 框架

  1. Electron
  2. NodeGUI
  3. Proton Native
  4. NW.js
  5. AppJS

使用步骤

1.搭建Electron项目:首先你要明确搭建项目只需要用Electron作中转打开在线的网址还是说你要把页面写在Electron项目里面,Electron可以集成到vue,react等框架 具体可以自行百度 下面只讲搭建Electron单项目,来连接

  • 安装 electron
npm install -g electron

electron-forge 搭建一个 electron 项 目

electron-forge 相当于 electron 的一个脚手架,可以让我们更方便的创建、运行、打包 electron 项目。

npm install -g electron-forge 
electron-forge init my-new-app 
cd my-new-app
npm start

至此项目跑起来了 嫌麻烦可以直接克隆官方demo库 

2. Electron中使用WebSocket 通信

  • main.js:程序入口文件 我们直接写在主进程中

先创建一个浏览器窗口

const {app,BrowserWindow} = require('electron')
const path = require('path')
let mainWindow  
function createWindow() {
        let displays = electron.screen.getAllDisplays()
        let externalDisplay = displays.find((display) => {
              return display.bounds.x !== 0 || display.bounds.y !== 0
        })
        mainWindow = new BrowserWindow({
          fullscreen: false,
          x: externalDisplay.bounds.x + 500,//
          y: externalDisplay.bounds.y + 50,
          width: 800,
          height: 740,
          title:app.getName(),
          frame: false ,//无边框窗体
          autoHideMenuBar:true,//可以使用户在打开软件时隐藏菜单栏,但是如果用户按下alt按键,菜单栏又会弹出来
          alwaysOnTop:true,//窗口是否永远在别的窗口上面
          webPreferences: {
            //解决electron require未定义,以下两项
            //是否注入nodeapi
            nodeIntegration: true,//nodeIntegration设为false页面就不能使用nodejs和Electron APIs
              contextIsolation: false,	 
            //渲染进程是否启用remote模块
              enableRemoteModule: true,//在渲染进程中使用主进程中的模块方法时,可以使用Electron Remote解决在渲染和主进程间的通讯,这么看 remote 模块可以说是非常好用啦,渲染进程就不用显式通过 ipcRenderer / ipcMain 与主进程通信。除此之外,可以通过 remote.getGlobal 获取主进程中 的全局变量, 通过 remote.process 拿到主进程的 process 对象信息
            preload: path.join(__dirname, 'preload.js')
          }
        })
  // 窗口 不在任务栏显示  true 表示不显示,false 表示显示。
  mainWindow.setSkipTaskbar(false)
  //启动时加载 index.html页面.
  mainWindow.loadFile('./index.html')
  //打开页面调试工具:DevTools.
  mainWindow.webContents.openDevTools()
  // 永久隐藏菜单栏
  mainWindow.setMenu(null);
  mainWindow.on('closed', () => {
    mainWindow = null
  })
}

        mainWindow.loadFile('./index.html') 是打开当前index.html文件作为渲染进程的界面如果是用在线地址应该用mainWindow.loadURL("http://************");的方式 代替

        上面跑起来了项目并且也有了窗体打开在想要的位置第二屏,接下来是Node.js ws 模块 使用

        引入:

const WebSocketServer = require('ws').Server;

        创建:

var Socket =new WebSocketServer({port: 10000});//10000为端口号

 Socket.on监听connection连接事件 在里面每一个socke客户端连接都会触发  接下来就是记录进来的连接

 Socket.on('connection', (ws,req) => {

 });

例如我要A端向B端发消息这时候 A,B端都连接到这个socket服务端 


   let ASocket =null
 Socket.on('connection', (ws,req) => {
     ASocket =ws //这里是收到了连接并记录下来 

     //下面要建立监听 接受A端消息
      ASocket.on('message', (message) => {
               // 接收到消息 反馈  这里可以判断B屏是否连接进来 连进来的话应该发给B屏的
            ASocket.send(JSON.stringify({type:0}))
       
      });
 });

上面是简单的例子 创建一个浏览器窗口代码可以直接使用    socket只给了一个简要使用说明 具体代码业务还需自己拿捏  如果有有什么疑问欢迎留言

书接上文 electron 桌面端之副屏展示 (二) 上文写到,借助可以简单且快速的实现桌面端应用,对于部分业务需求可能也想实现副屏的展示(比如零售行业,副屏显示结算信息之类的)老规矩,思路分析,首先上一篇我们知道,我们可以利用去创建窗口,然后加载对应的网页,那么副屏页可以用同样的思路,1、我们要知道怎么检测有没有副屏 2、,知道有副屏后,此时就应该去创建窗体,加载网页…,既然知道了思路,老规矩,去看看文档。 阅读详情

相关推荐

Playwright鼠标操作深度解析:悬停失效、坐标失准与链式操作稳定性

鼠标操作是Web自动化中的基础交互能力,其本质涉及浏览器渲染管线、事件循环、DPI缩放与CSS布局的协同机制。Playwright虽提供底层mouse API,但原生事件注入不触发完整DOM事件生命周期,导致mouseenter悬停失效、高DPI下坐标偏移、多显示器跨屏错位等典型问题。技术价值在于突破‘能点’到‘稳点’的可靠性跃迁——需结合devicePixelRatio校准、boundingBox动态补偿、合成器帧同步及pressure参数调优。广泛应用于电商二级菜单测试、金融富文本工具栏验证、工业HMI

weixin_34210740的博客 442

前端可视化大屏设置全屏模式方法

相当于手动按F11的效果。经典的应用场景是制作可视化大屏或者全屏展示类的页面。因为现在写的是vue项目,所以稍后以vue为例子。注意一个点,样式设置为绝对定位之类的,意思是别让他占位置影响布局。第五步,生命周期中调用,达到一进入就自动全屏。第四步,页面的结构里面找个位置粘贴以下代码。附上一个设置返回功能的写法,以供参考。第二步,在你需要使用的页面中引入。第三步,复制下面的函数。...

接着奏乐接着舞的博客 6733

电竞赛事系统防错设计:从亚运会误判事故看标准化执行

电子竞技作为正式竞赛项目,其赛事执行已超越娱乐范畴,进入具备法律效力与技术可验性的公共服务阶段。核心在于理解‘赛事判罚’背后的系统性逻辑——不是简单的人工操作,而是人因工程、流程闭环、日志溯源与仲裁机制共同构成的技术契约。亚运会电竞比赛中‘未打即负’事件,本质暴露了UI一致性缺失、操作域未隔离、静默观察期缺位、成绩同步无锁等典型漏洞。这些并非个案,而是当前中小型赛事普遍面临的标准化断层。通过物理-逻辑双重隔离、上下文感知日志、动态AI观察期、区块链申诉存证等可落地方案,能将‘不出错’升级为‘错不了’。本文聚

weixin_33853794的博客 386

html and css3 实现分屏设计-网页前端设计 id1086

html and css3 实现分屏设计-网页前端设计 id1086 源码下载地址 在新演示地址 <!DOCTYPE html> <html lang="en"> <head> <link href="https://fonts.googleapis.com/css?family=Roboto+Condensed:300,300i,400,400i,700i" rel="stylesheet"> <title>Split</ti

zwxic的博客 1587

Electron中Vue编写的全屏控制及退出功能的交互

在Electron应用程序中,Vue作为前端框架被广泛使用,它提供了一种简洁而灵活的方式来构建用户界面。通过上述步骤,我们成功地在Electron应用程序中添加了Vue,并实现了全屏控制和退出功能。假设你已经安装了Node.js和npm,并且已经创建了一个空的Electron项目。现在,你将看到一个基本的Electron应用程序窗口,其中包含一个按钮。本文将介绍如何使用Vue编写Electron应用程序中的全屏控制和退出功能,并提供相应的源代码。在上述代码中,我们创建了一个按钮,当按钮被点击时,将触发。

2301_79326616的博客 1083

Ubuntu零基础入门到精通【4.4讲】:网络、蓝牙、显示器、声音与输入法设置!

🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。 本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。

**My Coding Family** 1488

双屏还是三屏?揭秘顶尖程序员桌面显示配置的黄金法则

双屏还是三屏?揭秘顶尖程序员桌面改造方案的黄金法则。针对开发、调试与多任务场景,解析屏幕布局、设备选型与效率提升技巧,实现专注力与生产力双赢。科学配置,事半功倍,值得收藏。

CodeNexus的博客 1351

指定形状词云三套源码:ECharts、纯JS与Canvas 3D球形滚动

前端可视化中的词云图,本质是把关键词按权重映射为字号、颜色与空间位置,再通过遮罩约束或三维投影形成指定形状。指定形状词云通常借助透明PNG、SVG路径或离屏Canvas生成可放置区域,3D球形滚动则用斐波那契球均匀撒点,经旋转矩阵与透视投影实现近大远小和深度排序。其技术价值在于兼顾视觉表现、交互性能与自适应布局,适合数据大屏、活动落地页和H5演示。围绕ECharts自定义形状、纯JS与Canvas缩放三套实现,可分别覆盖形状贴合、球体自转和镜头推拉等需求,并为二次开发保留清晰的数据与渲染边界。

weixin_34401479的博客 483

uniapp主副屏插件开发实战:从零构建双屏异显应用

本文详细介绍了基于uniapp主副屏插件开发双屏异显应用的实战指南。从插件购买、项目配置入手,重点解析了主屏通过原生API控制副屏显示、通信的核心方法,以及副屏H5页面的开发要点与双向数据传递机制。文章还提供了本地路径、通信时机等常见问题的避坑指南与性能优化建议,帮助前端开发者高效构建适用于零售、政务、商业显示等场景的双屏互动应用。

g5h6i7j的博客 435

Aurix TC3XX Cache memory分析

Aurix Cache memory 分析

qwe0405080615的博客 4355

超聚变安装银河麒麟服务器系统ky10-server-x86

超聚变-通过BMC口进服务器管理界面如下图为BMC管理口:默认BMC口IP:https://192.168.2.100l浏览器打开网页,输入用户名和密码登陆后,如下图红框处,选择“启动虚拟控制台”——选择“HTML集成远程控制台”系统银河麒麟服务器系统ky10 server x86选择镜像文件X86架构我们一般选择下图2212版本选择启动方式:光驱重启出现安装图形化界面选装安装系统的磁盘系统安装盘选完后如下图,会置灰创建root密码开始安装系统首次进入,有协议界面。

zengliguang的专栏 5967

餐饮零售POS系统实战设计:从收银交互到后台数据模型

POS系统是门店运营的神经中枢,涉及收银交互、支付聚合、库存管理和数据同步等核心技术。其原理基于门店动线优化交互设计,通过异步确认和幂等处理保障支付可靠性,利用乐观锁控制库存并发,并借助离线模式与数据补偿机制应对网络异常。技术价值在于提升收银效率、确保数据一致性、支持多门店连锁管理。应用场景覆盖餐饮零售的高峰期收银、库存扣减、报表统计及总部门店协同。自然收敛到本文主题:深入拆解POS系统从原型到落地的实战设计逻辑与避坑指南。

weixin_42548874的博客 216

LS-Dyna模态分析实战:从模型构建到结果解读的全流程指南

本文提供了一份详尽的LS-Dyna模态分析实战指南。文章系统讲解了如何利用LS-Dyna内置的隐式求解器进行特征值求解,从模型构建、几何清理、材料与连接设置,到核心的边界条件与隐式求解控制(如*CONTROL_IMPLICIT_EIGENVALUE),最后完成计算并解读频率与振型结果。旨在帮助工程师在熟悉的环境中高效完成结构振动特性分析,为后续动态响应分析奠定基础。

info6的博客 264

Ubuntu 22.04多显示器扩展屏配置与故障排查实战

多显示器扩展本质上是把多个物理输出映射到统一虚拟画布,依赖会话类型、显卡驱动、接口带宽以及EDID、CRTC等显示模型协同工作。理解Xorg与Wayland的差异后,才能借助xrandr完成分辨率、位置、主屏和旋转配置,并通过脚本固化布局。该能力适用于台式双屏、笔记本扩展坞、USB转显和无头远程等场景,有助于提升桌面效率并减少黑屏、闪屏和配置丢失问题。围绕Ubuntu 22.04多显示器扩展屏配置与故障排查,梳理从环境识别、布局实战到长期维护的可复现方法。

weixin_34293059的博客 339

金蝶EAS uploadlogo漏洞实战:如何快速检测你的系统是否受影响

本文详细解析了金蝶EAS uploadlogo任意文件上传漏洞的检测与防护方法,帮助企业安全团队快速识别系统风险。通过资产发现、漏洞验证和应急响应方案,有效防范财务数据泄露和系统入侵风险,提升企业整体安全防护能力。

weixin_29322553的博客 389

开发者体验度量:构建DevEx评估体系的方法论与工具

在深入讨论度量方法前,我们需要明确什么是开发者体验(DevEx)。许多人将其简化为"开发工具好不好用",这是一个危险的误解。开发者体验是指开发者在完成工作过程中的整体感受和效率,它由三大核心维度组成:工具与基础设施:开发、测试、部署工具链的效能流程与协作:工作流程的顺畅度和团队协作的效率文化与成长:支持实验、学习和专业发展的环境这三个维度相互作用,共同决定了开发者能否高效且愉悦地完成工作。开发者体验不是一个目的地,而是一段持续的旅程。

2401_88760782的博客 1429

Ubuntu 22.04多显示器扩展屏配置与故障排查指南

多显示器扩展的本质,是操作系统通过显示服务把显卡输出通道、屏幕能力与桌面布局串成一条可用链路。内核DRM先识别接口与EDID,X11或Wayland会话再决定配置入口:X11常靠xrandr管理输出模式与位置,Wayland多由GNOME设置面板完成布局与缩放。理解这条链路的价值在于,外接屏不亮、分辨率锁死、布局错乱或扩展坞间歇黑屏时,能快速区分物理连接、协议会话与软件配置问题。笔记本工位、合盖办公、多屏调试等场景都依赖稳定输出。围绕Ubuntu 22.04多显示器扩展屏,掌握xrandr用法、Waylan

weixin_34006965的博客 480

【Unity大规模RTS/攻城战框架】Large Scale Combat System - RTS Sieges深度解析

本文介绍了Unity专业级大规模RTS战斗框架Large Scale Combat System(LSCS)。该系统通过Job System+Burst技术解决了万人级单位的性能问题,提供完整的RTS操作体系、动态阵型系统、战术AI和攻城战功能。其亮点包括可破坏城门、行走城墙、战术AI配置系统,支持URP渲染管线,适用于Total War风格的大规模兵团对战项目。LSCS不仅提供核心战斗系统,还包含UI、小地图等配套模块,是Unity中少有的专业级RTS解决方案,特别适合需要深度战术玩法和大规模战斗的开发者

2403_88403568的博客 1336

四类坐标系本质与转换:屏幕、视口、世界、局部

坐标系是计算机图形与交互系统的基础空间参照框架,其核心在于定义原点、轴向与单位。屏幕坐标以显示器左上为原点,是操作系统级物理像素定位;视口坐标以浏览器可视区域为基准,支撑响应式Web交互;世界坐标构建3D场景全局空间,保障物体间空间关系一致性;局部坐标绑定物体自身,实现独立变换与层级动画。四者通过矩阵变换、归一化映射与DPI适配等机制动态流转,共同支撑从鼠标点击到3D模型旋转的完整数据链路。理解其原理与转换边界,是解决UI偏移、Canvas绘图错位、AR对齐失败等工程问题的关键。

weixin_33966095的博客 400

如何在 R 中执行 Kruskal-Wallis 检验

Kruskal-Wallis 检验用于确定三个或更多独立组的中位数之间是否存在统计学上的显着差异。它被认为是单向方差分析的非参数等效项。本教程介绍了如何在 R 中执行 Kruskal-Wallis 检验。示例:R 中的 Kruskal-Wallis 检验 假设研究人员想知道三种不同的肥料是否会导致不同水平的植物生长。他们随机选择 30 种不同的植物并将它们分成三组,每组 10 株,每组施用不同的肥料。在一个月结束时,他们测量每株植物的高度。使用以下步骤执行 Kruskal-Wallis 检验以确定三个组的中

Mrrunsen的博客 3801

AI Agent Harness内容审核:生成内容合规

在过去的几年里,生成式人工智能(Generative AI)技术取得了爆炸性的发展。从 GPT-4、Claude 这样的文本生成模型,到 Midjourney、Stable Diffusion 这样的图像生成工具,再到 Sora 这样的视频生成模型,AI 已经具备了媲美甚至超越人类的内容创作能力。然而,技术是一把双刃剑。随着生成式 AI 的普及,内容安全与合规风险也呈指数级增长。

AI架构师小马 300

UltraStar Deluxe(USDX)上手指南:安装配置、config.ini 详解与源码编译全流程

UltraStar Deluxe(简称 USDX)是一款免费开源的卡拉 OK 歌唱游戏,允许最多六名玩家同时使用麦克风跟随音乐演唱,系统根据玩家嗓音的音高与演唱节奏给出评分。本文以官方 README 为主线,完整梳理 USDX 的安装渠道、config.ini 核心配置项(歌曲目录、手柄支持、多屏显示等)、macOS/flatpak 专属路径差异,并深入仓库源码说明配置项的解析实现,最后给出 La

gitblog_00427的博客 501

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IBASE MI1001 Mini-ITX工业主板:边缘计算与工控替换的可靠之选

在工业计算领域,Mini-ITX板型凭借17cm×17cm的标准化尺寸,长期扮演着兼顾扩展性与体积的“万金油”角色。其原理是在有限面积内集成丰富的I/O接口、灵活的供电方案与可靠的散热设计,从而适应产线数据采集、自助终端、智能网关等多样化场景。工业级主板强调宽温工作、长周期供货和抗干扰能力,与普通商用板卡在元器件选型、测试标准上存在本质差异。随着边缘计算需求爆发,工控设备不仅要稳定运行,还需在靠近数据源的位置完成实时推理与协议转换。IBASE MI1001正是瞄准这一交集市场,采用LGA1700插槽搭配In

congsikuai0611的博客 309

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

LVGL+GUI Guider嵌入式GUI开发实战:从拖拽建模到STM32真机稳定运行

嵌入式图形界面(Embedded GUI)是资源受限MCU实现人机交互的核心能力,其本质是轻量级渲染引擎与可视化开发工具的协同。LVGL作为主流开源嵌入式GUI库,提供高效率、低内存占用的2D渲染能力;GUI Guider则通过所见即所得的拖拽建模,将LVGL API转化为可维护的C代码工程。二者结合显著降低开发门槛,解决坐标调试、事件绑定、资源管理等传统手写GUI的典型痛点,在STM32F4/F7/H7等平台实测可将界面开发周期压缩至1小时级。本文聚焦工业级落地细节,涵盖LVGL底层驱动注册、FreeRT

weixin_33882452的博客 345

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Vue框架实现KRPano双屏联动

上面的代码中,我们首先定义了一些变量来保存鼠标拖拽的状态和起始位置。在鼠标移动事件中,我们根据鼠标移动的距离来调整全景图的视角,从而实现分屏联动的效果。而在全景图中,分屏联动是一种非常常见的交互方式,它能够让用户同时看到多个角度的场景,从而更好地理解整个场景的结构。当然,这只是一个简单的示例,实际上我们可以根据自己的需求来扩展这个功能,比如添加更多的交互效果、调整分屏的布局等等。上面的代码中,我们创建了一个div元素来作为全景图的容器,然后在mounted钩子函数中初始化了KRPano的Viewer对象。

张志强的博客 1074
上一篇: js 中 实现扫码枪在中文输入法下扫码与实际差异的问题(大小写字母和数字的已没问题特殊字符还不知道咋处理所以没实现特殊字符)
起风了咦
博客等级 码龄7年 2粉丝 10原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值