【Electron】webview 实现网页内嵌

作者 : admin 本文共1396个字,预计阅读时间需要4分钟 发布时间: 2024-06-10 共2人阅读

实现效果:

当在输入框内输入某个网址后并点击button按钮 , 该网址内容就展示到下面

【Electron】webview 实现网页内嵌插图

踩到的坑:之前通过web技术实现 iframe 标签内嵌会出现 同源策略,同时尝试过 vue.config.ts 内配置跨域项 那样确实 是实现啦 但不知道如何动态切换 tagert 的值 

同源策略:

Refused to frame ‘http://www.baidu.com/’ because an ancestor violates the following Content Security Policy directive: “frame-ancestors ‘self’ http://chat.baidu.com http://mirror-chat.baidu.com http://fj-chat.baidu.com http://hba-chat.baidu.com http://hbe-chat.baidu.com http://njjs-chat.baidu.com http://nj-chat.baidu.com http://hna-chat.baidu.com http://hnb-chat.baidu.com http://debug.baidu-int.com”.

1. npm init -y //先安装package.json

2.npm install electron 

3.创建main.js

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

let mainWindow

function createWindow () {
  mainWindow = new BrowserWindow({
    width: 1200,
    height: 1000,
    webPreferences: {
      nodeIntegration: true,
      webviewTag: true // 启用webview标签
    }
  })

const menu = Menu.buildFromTemplate([])
 // 设置菜单栏 =主进程
Menu.setApplicationMenu(menu)

  mainWindow.loadFile('index.html')

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

app.whenReady().then(createWindow)

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

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

4.

Menu的作用是去除顶部菜单栏

【Electron】webview 实现网页内嵌插图(1)

const { Menu } = require('electron')
const menu = Menu.buildFromTemplate([])
 // 设置菜单栏 =主进程
 Menu.setApplicationMenu(menu)

5.如果你在这里使用了 webview 标签 那么你一定要在 webPreferences内添加webviewTag并true ,因为在高版本的electron内 webview标签默认是禁用的状态 

【Electron】webview 实现网页内嵌插图(2)





    
    
    
    你好!



    
        
        
    
    


    



启动命令:
npx electron . 

npm install -g electron

electron .

本站无任何商业行为
个人在线分享 » 【Electron】webview 实现网页内嵌
E-->