【Electron】webview 实现网页内嵌

实现效果:

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

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

同源策略:

Refused to frame 'https://www.baidu.com/' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self' https://chat.baidu.com http://mirror-chat.baidu.com https://fj-chat.baidu.com https://hba-chat.baidu.com https://hbe-chat.baidu.com https://njjs-chat.baidu.com https://nj-chat.baidu.com https://hna-chat.baidu.com https://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的作用是去除顶部菜单栏

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

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

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <!-- https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CSP -->
    <meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline';">
    <title>你好!</title>
</head>

<body>
    <div style="display: flex;">
        <input type="text" id="urlInput" placeholder="Enter URL" style="width: 100%;">
        <button id="openUrl">Open URL</button>
    </div>
    <webview id="foo" src="https://www.douyin.com/" httpreferrer="https://www.douyin.com/"
        style="display:flex; width:100%; height:900px"></webview>


    <script>
        urlInput = document.getElementById('urlInput')
        openUrl = document.getElementById('openUrl')
        foo = document.getElementById('foo')

        openUrl.addEventListener('click', async () => {
            foo.setAttribute('src', urlInput.value)
        })
    </script>

</body>

</html>

启动命令:
npx electron . 

npm install -g electron

electron .

相关推荐

  1. uniapp实现其他网页的功能

    2023-12-31 07:16:01       7 阅读
  2. uniapp实现小程序和webView的互通

    2023-12-31 07:16:01       37 阅读
  3. 初识 iframe

    2023-12-31 07:16:01       14 阅读
  4. 前端iframe网页单点登录的三种方式

    2023-12-31 07:16:01       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-31 07:16:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-31 07:16:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-31 07:16:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-31 07:16:01       20 阅读

热门阅读

  1. 云计算基础、Issa、Pssa、Saas区别

    2023-12-31 07:16:01       28 阅读
  2. 编程新手IDE

    2023-12-31 07:16:01       34 阅读
  3. IDEA Gradle 下载源码

    2023-12-31 07:16:01       40 阅读
  4. 了解CPU架构

    2023-12-31 07:16:01       35 阅读
  5. SpringBoot如何优雅的处理免登录接口

    2023-12-31 07:16:01       37 阅读
  6. 解构赋值的使用

    2023-12-31 07:16:01       35 阅读
  7. 【C++】表达式返回值的数据类型

    2023-12-31 07:16:01       36 阅读
  8. 【Kubernetes】控制器Daemonset

    2023-12-31 07:16:01       27 阅读
  9. c# 循环提速

    2023-12-31 07:16:01       34 阅读