javascript - JS - 如何处理文件名中的空格?
问题描述
在文件名中添加空格会破坏代码。这有效:
<html>
<img id="window-1" src="http://url.net/demo1.png">
<img id="window-2" src="http://url.net/demo2.png">
<script>
const content = { uid: 'image-1', uri: 'http://url.net/demo1.png' };
const mediaWindows = [document.getElementById('window-1'), document.getElementById('window-2')];
function getPlayedWindow(playedContent) {
return mediaWindows.find((window) => window.src === playedContent)
}
console.log(getPlayedWindow(content.uri));
</script>
这不是,该函数返回未定义:
<html>
<img id="window-1" src="http://url.net/demo 1.png">
<img id="window-2" src="http://url.net/demo 2.png">
<script>
const content = { uid: 'image-1', uri: 'http://url.net/demo 1.png' };
const mediaWindows = [document.getElementById('window-1'), document.getElementById('window-2')];
function getPlayedWindow(playedContent) {
return mediaWindows.find((window) => window.src === playedContent)
}
console.log(getPlayedWindow(content.uri));
</script>
我试过玩 JSON.stringify,没有运气。
我错过了什么?
编辑:不是重复的,问题是关于空格的。指出可能的重复实际上提供了一个答案,但如果不先问就无法知道这一点。
解决方案
您可以使用它encodeURI(content.uri)
来确保字符串被正确编码为 URI 并与您在其中看到的内容相匹配window.src
(HTML 会自动进行 URI 编码以使其成为有效的 URL)。理想情况下,坚持使用合法的 URI 并避免该问题。
<html>
<img id="window-1" src="http://url.net/demo 1.png">
<img id="window-2" src="http://url.net/demo 2.png">
<script>
const content = { uid: 'image-1', uri: 'http://url.net/demo 1.png' };
const mediaWindows = [document.getElementById('window-1'), document.getElementById('window-2')];
function getPlayedWindow(playedContent) {
return mediaWindows.find((window) => window.src === playedContent)
}
console.log(getPlayedWindow(encodeURI(content.uri)));
</script>
这是确切发生的事情的最小说明:
const uri = "http://url.net/demo 1.png";
console.log("from document:", document.querySelector("img").src);
console.log("unencoded string URI:", uri);
console.log("encoded string URI:", encodeURI(uri));
<img src="http://url.net/demo 1.png">
推荐阅读
- c++ - 使用 libsndfile 读取具有跳跃长度的波形文件,或识别文件中的样本数
- django - drf-yasg:如何隐藏 Django rest 框架模式?
- javascript - 绘制大画布时显示加载指示
- php - '试图在 laravel 中获取非对象的属性'value_type1'
- google-sheets - 单元格条件 Google 表格
- react-native - 反应本机酶装载本机元素“在此浏览器中无法识别”
- amazon-cloudformation - 如何在 AWS 云形成中从堆栈发出 https 请求
- c# - System.Net.Http 的“无法加载文件或程序集”错误
- react-native - React Native 中的 Expo-Image-Picker
- c++ - 如何使用 for 循环从包含不同派生类的基类数组初始化对象?