热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用electron做一个浏览器

文章目录iframe输入网址iframeelectron的窗口控件,实际上就是一个html解析工具,也就是说,通过electron可以用


文章目录

    • iframe
    • 输入网址


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&#61;"container" style&#61;"width:100%"><input id&#61;"input" style&#61;"width:100%"><iframe id&#61;"iframe" width&#61;"100%"src&#61;"https://tinycool.blog.csdn.net/"frameborder&#61;"0"onload&#61;"changeFrameHeight()">iframe>div>
body>

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

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

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

window.addEventListener(&#39;resize&#39;, function(){changeFrameHeight();
})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ll9beQSr-1651625379762)(js/electron_8.png)]


输入网址

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

window.addEventListener(&#39;DOMContentLoaded&#39;, () &#61;> {const input &#61; document.getElementById("input");const ifm &#61; document.getElementById("iframe");input.addEventListener("keydown", function(evt){if(evt.key&#61;&#61;&#61;"Enter"){ //当按下回车键时updateURL(ifm,input.value)}})
})function updateURL(ifm, url){if (url.slice(0, 8).toLowerCase() !&#61; &#39;https://&#39; && url.slice(0, 7).toLowerCase() !&#61; &#39;http://&#39;)url &#61; &#39;https://&#39;&#43; url;ifm.src &#61; url //更新ifm的地址
}

效果为

在这里插入图片描述


推荐阅读
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文总结了在开发中使用gulp时的一些技巧,包括如何使用gulp.dest自动创建目录、如何使用gulp.src复制具名路径的文件以及保留文件夹路径的方法等。同时介绍了使用base选项和通配符来保留文件夹路径的技巧,并提到了解决带文件夹的复制问题的方法,即使用gulp-flatten插件。 ... [详细]
  • 本文介绍了在使用vue和webpack进行异步组件按需加载时可能出现的报错问题,并提供了解决方法。同时还解答了关于局部注册组件和v-if指令的相关问题。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
author-avatar
爱上高清_925
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有