(我是一个Actionscript / Flex开发人员,正在向Javascript过渡。这可能是一个愚蠢的问题而且重复但我不知道这个问题是否与Javascript,Electron,web开发有关一般来说,请善待。)
我一直在使用Electron和使用OSX的Fabric.js
开发一个简单的项目。功能是用户可以选择本地图像文件并对其进行注释。工作正常,我学到了很多东西。但是我把它带到了Windows,并且由于用户选择的图像文件的路径被破坏而中断。
出于某种原因,所有反斜杠都将从路径中删除。有人可以解释发生了什么以及我如何解决这个问题吗?
OSX
路径 /Users/Rocket/Desktop/house.jpg
cmd: loadImage(" /Users/Rocket/Desktop/house.jpg")
loadImage: /Users/Rocket/Desktop/house.jpg窗
路径: C:\ Users \ Windows7 \ Desktop \ assets \ house.jpg
cmd: loadImage(" C:\ Users \ Windows7 \ Desktop \ assets \ house.jpg")
loadImage: C:UsersWindows7Desktopassetshouse.jpg
如果我记录filenames
回调的filePickerCallback
参数,我会看到所有双反斜杠。当我在变量中使用该数组的第一项时,所有双反斜杠都转换为单反斜杠。莫名其妙。
[ 'C:\\Users\\Windows7\\Desktop\\assets\\house.jpg' ]
在电子(节点?)上下文中:
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);
}
答案 0 :(得分:1)
在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
换句话说,\中的第一个反斜杠被作为转义指示符吃掉:)