热门标签 | 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的地址
}

效果为

在这里插入图片描述


推荐阅读
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社区 版权所有