NeutralinoJS应用如何打开本地资源目录下的HTML文件到系统浏览器
解决Neutralino应用打开本地HTML文件到系统浏览器的方案
原方案失败原因
- 第一种相对路径调用失败是因为
Neutralino.app.open直接调用系统默认程序,相对路径没有上下文锚点,系统无法定位文件位置 - 第二种方案错误点有两个:一是拼接了
http://协议,本地静态文件应该使用file://协议;二是通过执行CD命令获取路径是Windows独有的写法,不支持跨平台,且容易出现换行、空格等字符串污染问题
正确实现方案
Neutralino启动时会自动注入全局路径变量,不需要自行执行系统命令获取资源地址,直接使用以下代码即可实现需求:
window.myApp = { openDocumentation: async () => { // NL_RESOURCES_PATH是Neutralino内置全局变量,直接对应config.json配置的resources目录绝对路径 const docPath = `${NL_RESOURCES_PATH}/help/help.html`.replace(/\\/g, '/') // 使用file协议包裹路径,调用系统默认浏览器打开 await Neutralino.app.open({ url: `file:///${docPath}` }) } }
如果需要在应用内打开新窗口而非系统浏览器,直接使用Web原生方法即可:
window.open('/help/help.html', '_blank', 'width=800,height=600')
注意事项
- 确保
help文件夹确实存放在项目的resources根目录下 - 打包后出现文件找不到问题时,检查
neutralino.config.json中的cli.resources.include配置项,确保已经添加help/**规则,避免打包时遗漏文件
内容的提问来源于stack exchange,提问作者rince
相关产品推荐
相关产品推荐

