我使用Backward Slashes从API获取一些图片,当我尝试在我的页面上显示这些图片时,它在Chrome上工作正常,但在其他浏览器如FireFox和IE上它无法正常工作一些谷歌搜索我知道我必须通过正斜杠传递URL,所以我尝试更换它,但它没有工作..
以下是我尝试过的代码......
输入
var test ="http:\\www.xyz.com\xy\ab\1324\1324.jpg";
var final = test.replace(/\\/g,"/");
输出
http:/www.xyz.comxyab13241324.jpg
请告诉我哪里出错了, 谢谢
答案 0 :(得分:1)
这是不可能的 - 使用提供的example-string或类似的东西。
\x
是第一个问题。 JavaScript认为这是 十六进制转义序列 ,这就是JavaScript-Interpreter抛出适当错误的原因:
Uncaught SyntaxError:无效的十六进制转义序列
即使我们采用另一个示例字符串:'http:\\www.xyz.com\yy\ab\1324\1324.jpg'
,它也会失败
JavaScript认为反斜杠是为了逃避 八进制转义序列 之类的东西 - 这就是为什么只需将此字符串输入JS-Console并点击返回就会返回:
" HTTP:\ www.xyz.comyyabZ4Z4.jpg"
要进行可视化,请进入您的控制台:'http:\\www.xyz.com\yy\ab\1324\1324.jpg'.split('');
您会看到即使\132
转换为Z
也是如此。
我现在尝试了很多东西,比如替换/转义,尝试JSON.stringify,使用文本节点,在虚拟XML文档中使用CDATA等等 - 没有任何效果。 如果有人发现了这样做的JavaScript方式,我很乐意了解它!
我不知道在JavaScript中如何做到这一点。似乎没有机会。
我认为你唯一的解决办法就是在服务器端逃避 在您的情况下,您将不得不编写一个小的服务器脚本,它调用您使用过的API并转换/转义所有内容,为您的JS做好准备。而你的JS称这个小服务器脚本。
答案 1 :(得分:0)
它可以正常使用反斜杠。
var test ="http:\\\\www.xyz.com\\xy\\ab\\1324\\1324.jpg";
var final = test.replace(/\\/g,"/");
console.log(final);
答案 2 :(得分:0)
猜测拼凑所有这些东西:
var test ="http:\\www.xyz.com\xy\ab\1324\1324.jpg";
这样的东西不是有效的HTML。\
字符的字符串,您必须将其转义,因此您需要var test = http:\\\\www.xyz.com
检查工作的一种方法是使用JSON.stringify
来提供输入源代码所需的实际值。 E.g:
var test = 'http:\\\\xyz.com';
console.log(test); // prints "http:\\xyz.com"
console.log(JSON.stringify(test)); // prints "http:\\\\xyz.com"