iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >electron 中 webview的使用示例解析
  • 902
分享到

electron 中 webview的使用示例解析

electron webview使用electron webview 2023-02-17 12:02:22 902人浏览 薄情痞子
摘要

目录正文获取WEBview的domwebview 页面webview页面的代码新建public/preload.js文件监听页面对否显示禁止打开新窗口刷新页面上一页下一页正文 we

正文

webview 想必都有所了解,比如:微信小程序嵌套H5

那么我们在electron中怎么使用webview呢?

我们先跟着官方文档展示一下,看是否能有效果;

若要在应用程序中嵌入网页, 请将 webview 标签添加到应用程序的被嵌入页面中 (这是将显示外来内容的应用程序页)。 在最简单的例子中, webview 标签包括网页的 src 和控制 webview 容器外观的 CSS 样式:

这是官网示列

<webview id="foo" 
    src="https://www.electronjs.org/zh/docs/latest/api/webview-tag#%E7%A4%BA%E4%BE%8B" 
    style="display:inline-flex; width:750px; height:calc(100vh - 5px)">
</webview>

展示效果:

既然我们现在能展示了,说明没得问题正常使用的没得问题的,那么我们就需要了解一些我们在工作中可能会遇到的场景

  • 获取webview的dom
  • 监听页面对否显示
  • 禁止打开新窗口
  • 刷新页面
  • 上一页
  • 下一页

获取webview的dom

先创建一个窗口,子窗口;可以看这篇文章会讲述怎么创建新窗口

electron创建新窗口(模态框)并相互传值,主进程传值给子进程

webview 页面

<webview id="foo"
      autosize="on"
      allowpopups
      :src="url"
      :data-home="url"
      scrollbars="none"
      partition="modal-webview"
      :preload="preloadPath"
      style="display:inline-flex; width:750px; height:calc(100vh - 5px)">
    
</webview>

webview页面的代码

在webview标签中设置:preload="preloadPath";然后返回相关dom字符串,并且在addEventListener中去监听参数是否返回;

这儿的时候大家可以灵活运用,比较是依靠原生去获取dom上的值,如果你直接获取某个标签的值的话,你直接获取标签的text的值即可;根据自己的需求去做相关的操作即可

    const preloadPath = computed(()=>{
      return path.join(__static, "/preload.js");
    })
    onMounted(() => {
        nextTick(()=>{
            // 获取webview的dom 
          data.webview = document.querySelector("#foo");
            // 监听页面是否渲染完成
          data.webview.addEventListener("did-finish-load", (e) => {
            data.webview.addEventListener("ipc-message", async (event) => {
              console.log(event); // 获取参数
              if (event.channel == 'foo-html-content') {
                const html = event.args[0]; // 获取的dom
                console.log(html);
              }
            })
            // 通知获取webview并返回参数,这个主要是preload.js里面的东西
            data.webview.send("foo");
          })
        })
    })

新建public/preload.js文件

主要是获取页面的一些标签,也可以根据相关类名获取

// public/preload.js
const { ipcRenderer } = require("electron");
ipcRenderer.on('foo',() => {
    const htmlContent = document.querySelector("html").innerHTML;
    ipcRenderer.sendToHost("foo-html-content", htmlContent);
})

这样就可以获取到webview展示内容的dom标签了

监听页面对否显示

以下是addEventListener的一些方法:

1.did-start-loading 页面开始加载

2.load-commit 主页面文档加载

3.page-title-updated title

4.dom-ready 主页面 dom 加载完成

5.load-commit frame文档加载

6.did-frame-finish-load frame 加载完成

7.did-frame-finish-load 最后一个是主框架frame 加载完成

8.did-finish-load 页面加载完成

9.page-favicon-updated 网页 icon

10.did-stop-loading 页面停止加载

禁止打开新窗口

我们在使用掘金的过程中,点击文章时他会打开一个新的窗口; 原因是设置的allowpopups属性;但是将allowpopups改为false时,点击文章会没效果;所以需要将allowpopups属性删除,然后根据下面的代码;就会在同窗口下实现跳转效果;

data.webview.addEventListener('new-window',(e)=>{
    const urlClass = new URL(e.url);
    const { protocol } = urlClass;
    if (protocol === "Http:" || protocol === "https:") {
      ata.url = e.url;
    }
})

刷新页面

可以刷新当前页面

// 刷新页面
    const refresh = () => {
      data.webview.reload();
    }

上一页

当我们点击了文章以后,想返回上一页的时候可以使用

// 上一页
    const back = () =&gt; {
      data.webview.GoBack();
    }

下一页

// 下一页
    const forward = () => {
      data.webview.goForward();
    }

以上就是今天的全部内容了;

以上就是electron 中 webview的使用示例详解的详细内容,更多关于electron webview使用的资料请关注编程网其它相关文章!

--结束END--

本文标题: electron 中 webview的使用示例解析

本文链接: https://www.lsjlt.com/news/196560.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • electron 中 webview的使用示例解析
    目录正文获取webview的domwebview 页面webview页面的代码新建public/preload.js文件监听页面对否显示禁止打开新窗口刷新页面上一页下一页正文 we...
    99+
    2023-02-17
    electron webview使用 electron webview
  • electron-builder打包的示例分析
    这篇文章主要介绍了electron-builder打包的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。开发electron客户端程序...
    99+
    2024-04-02
  • Android WebView基础应用的示例分析
    小编给大家分享一下Android WebView基础应用的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、WebView的基础配置WebSettings ws = getS...
    99+
    2023-06-22
  • AntDesignPro使用electron构建桌面应用示例详解
    目录注意事项声明主要分为两个部分开发环境使用打包应用配置package.json配置打包后的路径方式使用 electron-builder 打包 exe 文件或者安装包,压缩包安装p...
    99+
    2022-11-13
    AntDesignPro electron构建桌面 AntDesignPro electron
  • electron-vue图片压缩的示例分析
    这篇文章给大家分享的是有关electron-vue图片压缩的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 最近用electron-vue(E...
    99+
    2024-04-02
  • Kotlin语言使用WebView示例介绍
    目录1、WebView类提供的常用方法2、WebView的简单用法实现浏览网页1、启用JavaScript的支持2、目标的网页仍然在当前WebView中显示3、将网址传入3、结合We...
    99+
    2024-04-02
  • Android Webview拦截ajax请求的示例分析
    小编给大家分享一下Android Webview拦截ajax请求的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Android Webview虽然提供了页面加载及资源请求的钩子,但是对于h6的ajax请求并没有提供...
    99+
    2023-05-30
  • Spring Boot中使用Spring MVC的示例解析
    目录1.MVC2.Spring MVC3.Spring Boot中使用Spring MVC3.1.配置3.1.1.文件配置3.1.2.代码配置3.2.使用3.2.1.映射处理器3.2...
    99+
    2023-05-15
    Spring Boot使用Spring MVC Spring Boot Spring MVC
  • electron渲染进程主进程相互传值示例解析
    目录在electron中分为渲染进程和主进程浏览器传值给主进程浏览器环境主进程主进程传值给渲染进程主进程渲染进程注意在electron中分为渲染进程和主进程 渲染进程就是浏览器环境...
    99+
    2023-02-17
    electron进程渲染传值 electron主进程相互传值
  • Android开发使用WebView打造webapp示例代码
    目录前言代码如下前言 博主最近想做一款app,因为内容已经有了,故想到了使用WebView来做 ,现将代码贴出如下,供有同样需求的人参考,少走弯路 代码如下 public ...
    99+
    2024-04-02
  • Android中WebView与H5前端JS代码交互的示例分析
    这篇文章主要为大家展示了“Android中WebView与H5前端JS代码交互的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android中WebView与H5前端JS代码交互的示例分...
    99+
    2023-05-30
    android webview html5
  • Java使用SAX解析xml的示例
    目录一、SAX解析xml简介二、SAX解析XML实例三、SAX的实际应用一、SAX解析xml简介 SAX是Simple API for Xml的简写,主要功能是用于对xml文档进行...
    99+
    2024-04-02
  • 代理模式在vue中的使用示例解析
    目录引言1、图片预加载2、缓存代理3、跨域代理总结引言 当本体处于保护、缓存、虚拟或者过滤等情况下时,一个数据不适合被访问或者一个方法不能被直接调用,可以采用代理模式,先创建一个代理...
    99+
    2022-12-22
    vue 代理模式 vue 代理模式使用
  • vue + Electron 制作桌面应用的示例代码
    1.vue打包 这里使用vue原生打包命令,对vue项目进行打包 npm run build 2.配置 Electron 使用 Electron 制作桌面应用需要两个配置文件 &...
    99+
    2024-04-02
  • c++中ref的作用示例解析
    目录正文示例1:输出:输出:总结正文 C++11 中引入 std::ref 用于取某个变量的引用,这个引入是为了解决一些传参问题。 我们知道 C++ 中本来就有引...
    99+
    2023-05-17
    c++ ref作用 c++ ref
  • 使用Python解析JSON的实现示例
    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。Python3 中可以使用 json 模块来对 JSON 数据进行编解码,主要包含了下...
    99+
    2024-04-02
  • golang中vue使用websocket的示例分析
    小编给大家分享一下golang中vue使用websocket的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一. 编写golang服务端导入必要的webs...
    99+
    2023-06-15
  • Python中使用selenium库的示例分析
    这篇文章主要介绍Python中使用selenium库的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、selenium简介官网总的来说: selenium库主要用来做浏览器的自动化脚本库。二、seleniu...
    99+
    2023-06-15
  • 使用MySQL的示例分析
    这篇文章主要介绍了使用MySQL的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。属性表(product_props)结构如下数据量8...
    99+
    2024-04-02
  • 使用Ajax的示例分析
    这篇文章主要为大家展示了“使用Ajax的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“使用Ajax的示例分析”这篇文章吧。什么是ajaxajax(异步j...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作