在源中播放带有井号的音频不起作用

Playing audio with pound sign in the source doesn't work

我正在尝试播放源中带有井号的音频文件,但是当我尝试使用 new Audio() 对象播放音频文件时 JavaScript 出现此错误。

NotSupportedError: The media resource indicated by the src attribute or assigned media provider object was not suitable.

下面是创建音频对象并播放它的函数。我将参数 note 输出到控制台,以确保指定了正确的路径,而不仅仅是文件注释发现错误(双关语)。我尝试将参数 note 中的 # 替换为 \#,但这没有做任何事情(没想到会这样,但在寻求帮助之前值得尝试)。

其他使用的文件在GitHub上,如果您需要查看它们。

/*
 * Author:  Adam Oates
 * Created: 2/7/2019
 * Filename: main.js
 *
 */

function playNote(note) {
 let audio = new Audio();
 audio.src = "res/tones/" + note + ".mp3";
 console.log("res/tones/" + note + ".mp3");
 audio.play();
}

$(document).ready(function() {
 
 let pdo = new PianoDream();
 
 // plan to have different piano layouts in the future
 $("main").load("res/layouts/defaultLayout.html", function() {
  $("div.key").on("click", function() {
   console.log($(this).text());
   playNote($(this).text());
  });
 });
 
});

对于其他疑惑的人:正如 Alohci 所指出的,我必须 URL 对字符进行编码。然后井号在 URL 中变为 %23。 JavaScript 实际上有一个名为 encodeURIComponent() 的函数可以为您编码字符。

您可以在此处查看列表或 URL 编码字符: https://www.w3schools.com/tags/ref_urlencode.asp