我使用向后斜杠从 API 获取一些图像,当我尝试在页面上显示这些图像时,它在 Chrome 上工作正常,但在 FireFox 和 IE 等其他浏览器上则不起作用,经过一番谷歌搜索后,我发现我有用正斜杠传递 URL,所以我尝试替换它,但它不起作用..
以下是我尝试过的代码...
Input
var test ="http:\\www.xyz.com\xy\ab\1324\1324.jpg";
var final = test.replace(/\\/g,"/");
Output
http:/www.xyz.comxyab13241324.jpg
请让我知道我哪里出错了
谢谢
这是不可能的——使用提供的示例字符串或类似的东西。
\x
这是这里的第一个问题。 JavaScript 认为这是一个十六进制转义序列,这就是 JavaScript 解释器抛出适当错误的原因:
未捕获的语法错误:无效的十六进制转义序列
即使我们采用另一个示例字符串:'http:\\www.xyz.com\yy\ab\1324\1324.jpg'
它会失败。
JavaScript 认为反斜杠是为了转义某些东西八进制转义序列— 这就是为什么只需将此字符串输入 JS-Console 并按回车键即可返回:
“http:\www.xyz.comyyabZ4Z4.jpg”
To 可视化更重要的是,输入你的控制台:'http:\\www.xyz.com\yy\ab\1324\1324.jpg'.split('');
你甚至会看到\132
被转换为Z
.
我现在尝试了很多事情,比如替换/转义、尝试 JSON.stringify、使用文本节点、在虚拟 XML 文档中使用 CDATA 等等,但没有任何效果。如果有人找到了一种 JavaScript 方法来做到这一点,我会很高兴知道!
结论
我不知道有什么方法可以在 JavaScript 中执行此操作。看来是没有机会了。
在我看来,你唯一的解决方案是在服务器端转义它.
在你的情况下,你将不得不编写一个小服务器脚本,它调用你使用的 API 并转换/转义所有内容,以便为你的 JS 做好准备。你的 JS 调用这个小服务器脚本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)