(我是一名 Actionscript/Flex 开发人员,正在转向 Javascript。这可能是一个愚蠢的问题并且是重复的,但我不知道该问题是否与 Javascript、Electron、一般的 Web 开发有关等等。请友善。)
我一直在使用 Electron 和 OSX 的 Fabric.js
开发一个简单的项目。其功能是用户可以选择本地镜像文件并对其进行注释。效果很好,我学到了很多东西。然而,我把它带到 Windows 上,由于用户选择的图像文件的路径被修改,它崩溃了。
由于某种原因,所有反斜杠都被从路径中删除。有人可以解释一下发生了什么事以及我如何解决这个问题吗?
OSX
path /Users/Rocket/Desktop/house.jpg
cmd: loadImage("/Users/Rocket/Desktop/house.jpg")
loadImage: /Users/Rocket/Desktop/house.jpgWindows
path: C:\Users\Windows7\Desktop\assets\house.jpg
cmd: loadImage("C:\Users\Windows7\Desktop\assets\house.jpg")
loadImage: C:UsersWindows7Desktopassetshouse.jpg
如果我记录 filePickerCallback
回调的 filenames
参数,我会看到所有双反斜杠。当我在变量中使用该数组的第一项时,所有双反斜杠都会转换为单反斜杠。令人费解。
[ 'C:\\Users\\Windows7\\Desktop\\assets\\house.jpg' ]
<小时/>
在 Electron ( Node ?)上下文中:
function showFilePicker() {
var options = {
title: "Select Image",
properties: ['openFile'],
filters: [
{ name: 'Images', extensions: ['jpg', 'png'] },
],
}
dialog.showOpenDialog(mainWindow, options, filePickerCallback);
}
function filePickerCallback(filenames) {
if (filenames && filenames.length > 0) {
var path = filenames[0];
console.log('path',path);
var cmd = 'loadImage(' + '\"' + path + '\"' + ')'
console.log('cmd', cmd);
mainWindow.webContents.executeJavaScript(cmd);
}
}
<小时/>
在渲染上下文中
function loadImage(filepath) {
console.log('loadImage', filepath);
}
最佳答案
在 JavaScript 中,反斜杠被解释为下一个字符的转义。
`console.log('\a\b\c');`
//==> ac ( escaped a is a, escaped b is backspace , escaped c is c'
如果你想在字符串中使用反斜杠,你也必须转义它们
`console.log('\\a\\b\\c');`
//==> \a\b\c
换句话说,\中的第一个反斜杠被当作转义指示符吃掉:)
关于javascript - 所有反斜杠将从本地文件路径中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41578002/