用electron做一个浏览器

7 篇文章 0 订阅
订阅专栏


源码地址: electron做一个丐版浏览器,只有输入网址显示网页的功能,适合学习

iframe

electron的窗口控件,实际上就是一个html解析工具,也就是说,通过electron可以用最短的代码,写一个浏览器,甚至可以查看浏览器中网页源代码,如下图中点击View->Toggle Developer Tools

在这里插入图片描述

代码只需要一个main.js

const {app, BrowserWindow} = require('electron')

function createWindow () {
  const mainWindow = new BrowserWindow({
    width: 800,height: 600,
  })

  mainWindow.loadURL('https://tinycool.blog.csdn.net/');
  mainWindow.show()
}

app.whenReady().then(() => {
  createWindow()
  app.on('activate', function () {
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})

其中,mainWindow.loadURL用于加载链接。

当然,仅仅这样并不足以称为是一个浏览器,因为浏览器最起码得自己输入链接。而在electron中,提供了三种内嵌网页的方法,刚刚用到的BrowserWindow只是第一种。

而官方推荐的方法是iframe,这个也不出意外,众所周知iframe是个html元素,专门用于网页内嵌。故而修改index.html中的body,将iframe嵌入其中。

<body>
  <div id="container" style="width:100%">
    <input id="input" style="width:100%">
    <iframe id="iframe" width="100%"
      src="https://tinycool.blog.csdn.net/"
      frameborder="0"
      onload="changeFrameHeight()">
    </iframe>
  </div>
</body>

其中,changeFrameHeight为其加载时的事件,目的是让iframe的尺寸和整个页面相适配,这个函数可定义在preload.js

function changeFrameHeight(){
  var ifm= document.getElementById("iframe");
    ifm.height=document.documentElement.clientHeight-50;
}

又考虑到当窗口尺寸发生变化时,也应该调用这个高度适配函数,故添加一个监听器

window.addEventListener('resize', function(){
  changeFrameHeight();
})

在这里插入图片描述

输入网址

这回上面有个输入框了,可以输入网址,接下来实现这样的功能:输入网址后回车,则iframe跳转到指定网址。这个功能十分简单,只需在加载的时候,为这个input绑定一个回车事件

window.addEventListener('DOMContentLoaded', () => {
  const input = document.getElementById("input");
  const ifm = document.getElementById("iframe");
  input.addEventListener("keydown", function(evt){
    if(evt.key==="Enter"){    //当按下回车键时
      updateURL(ifm,input.value)
    }
  })
})

function updateURL(ifm, url){
  if (url.slice(0, 8).toLowerCase() != 'https://' 
    && url.slice(0, 7).toLowerCase() != 'http://')
    url = 'https://'+ url;
  ifm.src = url   //更新ifm的地址
}

效果为

在这里插入图片描述

Electron--快速入门
qq_45033897的博客
07-25 392
Electron--快速入门
browser-prototype:由Vue.js 2和Electron制作的浏览器原型
04-29
浏览器原型 由Vue.js 2和Electron制作的浏览器原型 构建设置 # install dependencies npm install # serve with hot reload at localhost:9080 npm run dev # build electron application for production npm run build # lint all JS/Vue component files in `src/` npm run lint 该项目是通过使用 @ 生成的。 关于原始结构的文档可以在找到。
simple-browser-electron:用于开发的简单浏览器
02-09
Navegador Simples Esse projeto teve como基地或 do Mayk Brito。 :laptop_computer: 原始的灵魂 Navegador simples para ajudar nos testes dasaplicações网站,desenvolvido com 。 :spiral_notepad: 先决条件 安特斯·德·科马萨尔(Antes decomeçar),维加斯·普雷萨尔·安纳斯·马奎纳(suamáquina) 是首选编辑器,没有使用VSCode的。 :game_die: Como Baixar e安装 # Clone este repositório $ git clone https://github.com/brunagoncalves/simple-browser-electron.git # Vá para a pasta do projeto $ cd simple-browser-e
electron一个丐版浏览器,只有输入网址显示网页的功能,适合学习
05-04
electron一个丐版浏览器,只有输入网址显示网页的功能,适合学习 博客:用electron一个浏览器 博客地址:https://tinycool.blog.csdn.net/article/details/124565497
Electron使用指南—打开网站窗口_electron项目可以在网页打开吗(1)
最新发布
2401_84301315的博客
05-12 573
还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,网络安全面试里的显眼包!王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!【完整版领取方式在文末!!内容实在太多,不一一截图了。
vue-electron-chrome:基于电子开发的应用浏览器
01-29
电子浏览器 一个基于电子开发的应用浏览器,主要用于网页APP全屏模式运行,使WEB应用看起来更像一个原生应用浏览器主题可定制,配置简单,实现了简单的网页浏览器功能。 百度云下载: 链接: ://pan.baidu.com/s/1nxh2nBb密码:77mq 跑 项目基于模板开发。 安装依赖: npm install 以dev方式运行: npm run dev 打包成一体文件: npm run build 打包需要等待几分钟,打包生成还原文件在项目里的build文件夹下; build/win-unpacked文件夹为免安装复制文件; build/electron-browser Setup 0.0.0.exe为安装文件。 软件运行配置说明
electron-browser:电子浏览器,使用chrome标签样式和BrowserView
03-18
electron-browser:电子浏览器,使用chrome标签样式和BrowserView
如何在浏览器唤起自己开发electron桌面应用程序
weixin_43254015的博客
06-16 2664
通过注册的自定义协议使你的应用程序与操作系统进行集成,并通过链接或请求的方式进行通信。通过定义协议和在操作系统中注册,你的应用程序能够被唤起并接收数据,以实现与浏览器或其他应用程序的交互。
记录一次使用 electron 套壳桌面端(一)
qq_45219069的博客
09-04 2192
electron 套壳网页端
跟我一起使用electron搭建一个文件浏览器
zhangge3663的博客
03-26 615
这个文件浏览器应用可以具备以下两种功能: 一:用户浏览器文件夹和查找文件 二:用户可以使用默认的应用程序打开文件 接下来我们开始进行开发吧 第一步创建文件和文件夹: mkdir lorikeet-electron cd lorikeet-electron sudo cnpm install -g electron touch package.json index.html ...
Electron学习 第九章嵌入网页
mm_0123456789的博客
02-10 2342
electron嵌入网页 文章目录electron嵌入网页一、创建项目1. 创建mian.js2. 创建页面 html二、验证代码1. 运行项目 一、创建项目 1. 创建mian.js 代码如下(示例): // main.js const electron = require("electron") const app = electron.app const BrowserWindow = electron.BrowserWindow const globalShortcut = electr
Electron】-BrowserView模块的有趣玩法
qq_43326668的博客
05-22 1238
除了在Electron应用程序中显示Web内容外,BrowserView模块还可以用于实现一些有趣的玩法和应用场景。在本篇文章中,我们将介绍一些有趣的玩法和不同的用途,以展示BrowserView模块的灵活性和强大性。
webview:该模块提供了Electron支持的类似浏览器的功能
05-22
Pown Webview Pown Webview是用于运行基于电子的应用程序的辅助工具和元库。... 像往常一样先安装Pown: $ npm install -g pown@latest 直接从Pown调用: $ pown webview图书馆使用从项目的根目录本
FelidaBrowser:使用Electron.js的轻量级Chromium浏览器
05-12
使用Electron.js的轻量级Chromium浏览器! 特征 Adblock内置 与Google Chrome和其他Chromium浏览器相比,RAM使用量更少(您可以清理缓存) 系统要求 浏览器的系统要求与Electron.js相同,因此这是所有操作系统都必须...
开发总结】electron浏览器打开踩坑
weixin_45207619的博客
03-29 814
遂按照文章中的过程进行复现,原作者的开发环境时mac系统,笔者用的是windows系统,在开发过程中遇到了在浏览器中输入scheme打开应用程序的场景,这个场景在日常生活中也经常用到,例如百度网盘或腾讯会议会从网页跳转到应用。在复现时,笔者的系统发生了报错,遂以为是操作系统的差异性,后来经过测试发现,是由于应用尚未打包并安装到应用程序中,可以理解为一个是Debug版本,一个是Release版本。构建中出现的第二个问题是没有通过编译的问题,采用换源的方法可以解决,具体可以参考。
唤醒手腕前端 Electron Gui 桌面应用开发详细教程(概念篇)
唤醒手腕的博客
03-03 1734
实用程序进程可用于托管,例如:不受信任的服务, CPU 密集型任务或以前容易崩溃的组件 托管在主进程或使用Node.jschild_process.fork API 生成的进程中。由于主进程和渲染器进程在 Electron 的进程模型具有不同的职责,因此 IPC 是执行许多常见任务的唯一方法,例如从 UI 调用原生 API 或从原生菜单触发 Web 内容的更改。为了解决这个问题,Chrome 团队决定让每个标签页在自己的进程中渲染, 从而限制了一个网页上的有误或恶意代码可能导致的对整个应用程序造成的伤害。
基于Electron的桌面端应用开发和实践
逸尘的专栏
12-06 7828
先简单介绍一下electronelectron是由Github开发的开源框架,现在由OpenJS基金会维护的一个开源项目。它允许开发者使用 HTML、CSS 和 JavaScript 来构建跨平台的桌面应用,而且构建出来的应用,可以很好地兼容 Mac、Windows 和 Linux 这些主流的操作系统。
electron-vite:轻松保护你的 Electron 源代码
知识分享官
09-22 2020
我们可以理解,V8 字节码是 V8 引擎在解析和编译 JavaScript 后产物的序列化形式,它通常用于浏览器内的性能优化。所以如果我们通过 V8 字节码运行代码,不仅能够起到代码保护作用,还对性能有一定的提升。例如,只要保护├──src│ ├──main│ │ └──...└──...main: {build: {output: {}}}}}},// ...},// ...}})`
electron-vue 用默认浏览器打开链接
顽石⚡
02-27 3040
template &lt;template&gt; &lt;div&gt; &lt;p&gt;官网地址: &lt;!-- &lt;a href="http://www.yunlauncher.com" target="_blank"&gt;http://www.yunlauncher.com&lt;/a&gt; --&gt; &lt;span @c
electron 主进程读取浏览器缓存
05-26
Electron 中,主进程可以通过使用 `session` 对象来访问浏览器缓存。`session` 对象代表了一个用户会话,每个 `BrowserWindow` 实例都有一个对应的 `session` 对象。 要读取浏览器缓存,可以使用 `session.defaultSession.getCacheSize()` 方法获取缓存大小,或者使用 `session.defaultSession.getCacheStorage(cache) `方法获取缓存存储对象,然后通过该对象的 `match(request, callback)` 方法来查找缓存项。 以下是一个简单的示例代码: ```javascript const { app, BrowserWindow } = require('electron') app.on('ready', () => { const win = new BrowserWindow() const ses = win.webContents.session // 获取缓存大小 const cacheSize = ses.getCacheSize() // 获取缓存存储对象 const cache = ses.getCacheStorage('disk') // 查找缓存项 cache.match('https://example.com', (err, entry) => { if (err) { console.error(err) return } if (entry) { console.log('缓存命中:', entry) } else { console.log('缓存未命中') } }) }) ``` 需要注意的是,由于安全原因,Electron 默认禁止在主进程中访问渲染进程的 `localStorage` 和 `sessionStorage`,如果需要访问这些数据,需要设置 `webPreferences` 对象的 `nodeIntegrationInSubFrames` 选项为 `true`。同时,为了避免安全问题,不建议将这些数据传递到渲染进程中。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 用C语言写一个计算器 48605
  • python中的open用法详解 42395
  • Matlab质心算法 26039
  • 用Python搓一个太阳系——行星运动仿真 22877
  • 如何用python给女朋友挑钻石(seaborn画图入门) 19475

分类专栏

  • python教程 44篇
  • 文献阅读 1篇
  • VS Code神级插件 25篇
  • Rust 18篇
  • Go语言 8篇
  • Raku 2篇
  • Python 61篇
  • Python可视化 71篇
  • Python+tkinter实战:绘图系统 33篇
  • 当Python遇到GIS 13篇
  • pygame 16篇
  • 用Python实现100种智能算法 17篇
  • Python标准库 86篇
  • sympy 26篇
  • Python光学仿真 27篇
  • Numpy 40篇
  • scipy 71篇
  • sklearn 14篇
  • open3d 19篇
  • 并发王者Erlang 10篇
  • 上古编程语言Fortran 9篇
  • Linux 4篇
  • 数据库 7篇
  • AI工具测评 15篇
  • windows高级玩家的养成之路 29篇
  • AutoHotKey 8篇
  • C&C++ 29篇
  • PCL 5篇
  • QT实战教程 9篇
  • R语言 28篇
  • 软件入门 40篇
  • .Net 45篇
  • WPF开发txt阅读器 19篇
  • 本科生实验 18篇
  • 编程语言学习 25篇
  • julia 19篇
  • 前端 7篇
  • 杂谈 10篇
  • 旧文 28篇
  • python旧文 32篇

最新评论

  • AutoHotKey教程6:面向对象编程

    微小冷: 不客气表情包有真人阅读并评论我的博客,我也很开心啦

  • AutoHotKey教程6:面向对象编程

    星若多彩: 写了个类似Python的JSON类,想重构__Enum来修改for in的枚举顺序,结果官方文档没有一个可参考的示例,总算从这里找到示范代码了,感谢

  • 用Python求常微分方程的解析解

    wimi2: 只能求解含两个方程的方程组吗?求解4个方程方程组该如何操作

  • erlang语言基础教程

    清歌月半: erlc testCase.erl

  • python窗口应用:wxpython超快速入门教程

    Pfolg: 我靠,那个按钮那里给我整笑了表情包

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • Harris角点检测原理及其在python-opencv的调用
  • 玩转Word域代码,再也不担心引用多个文献时的排版
  • go语言必会:for循环的4种用法
2024
06月 12篇
05月 6篇
04月 18篇
03月 62篇
02月 46篇
01月 62篇
2023年476篇
2022年163篇
2021年94篇
2020年12篇
2019年39篇
2018年3篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微小冷

请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

PHP网站源码坂田网站搭建福永网站设计福田企业网站制作罗湖网站推广丹竹头SEO按天扣费盐田建设网站丹竹头建设网站龙华百度网站优化广州网站改版观澜外贸网站设计布吉百度爱采购平湖seo爱联网站制作广州网站推广工具龙岗百姓网标王石岩关键词排名包年推广坪山模板制作布吉百姓网标王推广大运网站优化按天收费坂田SEO按效果付费横岗标王坪山建设网站坂田百度竞价民治网站排名优化沙井百度seo东莞百搜词包盐田网站制作设计荷坳建设网站光明至尊标王福田企业网站改版歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化