electron - (Electron) BrowserWindow 的 baseURLForDataURL 选项期望什么?
问题描述
我正在从 data-uri 加载一个窗口:
pref.loadURL('data:text/html;charset=utf-8,' + encodeURI(str), { baseURLForDataURL: 'file://' + app.getAppPath() } );
好消息是,开发工具控制台现在显示了应该加载但没有加载的 css/js 文件的错误,但我无法理解它的预期。任何地方都没有示例,甚至在启发此选项的 github 问题中也没有。
它是否需要绝对路径(如我上面的示例)?
解决方案
它通常会期望
'file://' + app.getAppPath().replace("\\", "/") + "/"
但目前,似乎存在一个问题,至少在使用协议“file://”时我们会收到错误。(https://github.com/electron/electron/issues/20700)
解决此问题的一种方法是生成自定义文件协议。
const { app, BrowserWindow, screen, protocol } = require('electron');
const path = require('path');
app.on('ready', () => {
const customProtocol = 'file2';
protocol.registerFileProtocol(customProtocol, (request, callback) => {
const url = request.url.substr(customProtocol.length + 2);
const file = { path: path.normalize(`${__dirname}/${url}`) }
callback(file)
});
let win = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
contextIsolation: true
}
});
win.loadURL(`data:text/html;charset=UTF-8,${encodeURIComponent(indexHTML)}`, {
baseURLForDataURL: `${customProtocol}://${app.getAppPath().replace("\\", "/")}/`
});
});
推荐阅读
- c# - 如何从压缩文件夹中获取文件并编码并将它们保存到数据库而不提取文件?
- mongodb - webflux returns a list of empty objects
- c - 如何从 tcl 脚本运行 C 方法?
- docker - Docker 容器网络 - Kafka Producer
- keras - 如何区分 Apple 平台上的代码和“人类文本”?
- powershell - How do i dynamically change file-names with Rename-Item?
- javascript - fs.readFileSync("./bank/"+client,'cp1251'); 正在抛出新的 ERR_INVALID_OPT_VALUE_ENCODING
- c# - 如何从 ObjectListView 中选定项目的特定列中获取数据?
- vba - 运行时错误 91,未设置对象,尝试自动下载电子邮件附件
- vb6 - 将 BLOB 保存到文档