【图片】使用本地图片
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');
}
});