Skip to main content

【图片】使用本地图片

webSecurity

可以将webSecurity改为设置为false

webPreferences: {
...
webSecurity: false,

}

protocol

注册自定义协议并拦截基于现有协议的请求。

实现与 file:// 协议具有相同效果的协议的示例:

进程:主进程

查看Electron官方文档,找到有关于Protocol的内容,官方的example为:

const { app, protocol } = require('electron')
const path = require('path')

app.whenReady().then(() => {
//注册FileProtocol
protocol.registerFileProtocol('atom', (request, callback) => {

//截取file:///之后的内容,也就是我们需要的 win可能是8
const url = request.url.substr(7)

//使用callback获取真正指向内容
callback({ path: path.normalize(`${__dirname}/${url}`) })
})
})

从示例可以观察出,我们事先需要指定某一个Scheme为文件的Scheme,在这里不一定需要file:///作为Scheme,你也可以使用自定的Scheme例如:youcomic:///,示例中使用的是atom:///

在函数中你可以做一些特殊处理,其作用类似于拦截器原理。

我们将实际代码修改为:

protocol.interceptFileProtocol('file', (req, callback) => {
const url = req.url.substr(8);
callback(slash(decodeURI(url)));
}, (error) => {
if (error) {
console.error('Failed to register protocol');
}
});