electron的webView通信

如何在Electron中使用webView打开网页获取DOM元素

Electron是一个基于Chromium和Node.js开源框架用于构建跨平台桌面应用程序。其中,Electron的webView是用来嵌入网页组件。在本文中,我们介绍如何使用Electron的webView打开网页获取DOM元素的值。

步骤1:创建Electron应用

首先,我们需要创建一个Electron应用。在命令行中,使用以下命令创建一个新的Electron应用:

mkdir my-electron-app
cd my-electron-app
npm init -y
npm i --save electron

在创建完毕后,您可以package.json文件看到Electron的依赖项。

步骤2:创建并配置webView

在Electron中,webView是一个嵌入式浏览器窗口用于在Electron应用程序显示网页我们可以在Electron的主进程中创建webView,并将其嵌入到应用程序中。在我们示例中,我们将创建一个webView实例并将其添加到Electron窗口中。在您的Electron应用程序中,打开main.js文件,然后添加以下代码

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

function createWindow () {
  win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true,
      webviewTag: true
    }
  })

  win.loadFile('index.html')

  const webview = document.createElement('webview')
  webview.src = '<https://www.google.com>'
  webview.addEventListener('dom-ready', () => {
    webview.executeJavaScript(`alert(document.title)`)
  })

  win.webContents.on('did-finish-load', () => {
    win.webContents.executeJavaScript(`
      const webview = document.querySelector('webview')
      webview.addEventListener('dom-ready', () => {
        webview.executeJavaScript(\`
          const body = document.querySelector('body')
          const p = document.createElement('p')
          p.innerText = 'Hello from Electron'
          body.appendChild(p)
        \`)
      })
    `)
  })

  win.on('closed', () => {
    win = null
  })
}

app.on('ready', createWindow)

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on('activate', () => {
  if (win === null) {
    createWindow()
  }
})

在上面的代码中,我们创建了一个新的BrowserWindow实例,并将其加载我们的Electron应用程序中。然后,我们使用document.createElement()方法创建了一个新的webView元素,并将其嵌入到我们的Electron窗口中。接下来,我们监听了webView的’domready事件,该事件在webView加载完毕后会触发。在事件处理程序中,我们使用webView.executeJavaScript()方法获取了网页的标题

步骤3:获取DOM元素的值

获取DOM元素的值,我们需要在webView的’domready’事件处理程序编写代码。在我们的示例中,我们将使用querySelector()方法选择要获取值的元素,然后使用innerText属性获取文本值。在您的Electron应用程序中,打开main.js文件,然后将以下代码添加到webView的’domready’事件处理程序中:

const webview = document.querySelector('webview')
webview.addEventListener('dom-ready', () => {
  webview.executeJavaScript(`
    const element = document.querySelector('h1')
    alert(element.innerText)
  `)
})

在上面的代码中,我们使用querySelector()方法选择了网页中的h1元素,并使用innerText属性获取了其文本值。接下来,我们使用alert()方法将文本弹出

步骤4:运行应用程序测试

完成了上述步骤之后,我们现在可以运行Electron应用程序测试是否能够正常工作。在命令行中,运行以下命令启动您的Electron应用程序

npm start

在Electron应用程序中,您应该可以看到我们嵌入的webView窗口,其中显示了Google的网页。当网页加载完毕后,应用程序应该会弹出一个包含网页标题警告框。接下来,当您点击警告框时,应用程序应该会弹出一个包含网页标题警告框。

结论

在本文中,我们介绍了如何使用Electron的webView打开网页并获取DOM元素的值。我们首先创建了一个Electron应用程序,然后创建了一个webView实例并将其嵌入到我们的应用程序中。接下来,我们监听了webView的’domready’事件,并使用executeJavaScript()方法获取了网页的标题最后,我们介绍了如何使用querySelector()方法选择DOM元素并使用innerText属性获取其文本值。希望这篇文章能够对您有所帮助!

原文地址:https://blog.csdn.net/qq_44984407/article/details/129179505

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_33596.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注