为什么浏览器会修改包含&#x的HTML元素的ID?

eck*_*kes 1 html javascript encoding

说我有这个HTML页面:

<html>
  <head>
    <script type="text/javascript">
      function echoValue(){
        var e = document.getElementById("/path/&#x24;whatever");
        if(e) {
          alert(e.innerHTML);
        }
        else {
          alert("not found\n");
        }
      }
    </script>
  </head>
  <body>
    <p id="/path/&#x24;whatever">The Value</p>
    <button onclick="echoValue()">Tell me</button>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我假设浏览器将ID字符串/path/&#x24;whatever视为简单字符串.实际上,它将其转换为&#x24;渲染表示($).

然而,javascript代码使用文字字符串&#x24;来搜索元素.因此,呼叫document.getElementById失败,我从未接受过段落的价值.

有没有办法强制浏览器按字面意思使用给定的ID字符串?


编辑:
当然我知道我不必逃避$.但是生成了网页并且生成器进行了转义.所以,我必须应付我所拥有的.

dus*_*uff 5

在中<p id="...">,&#x24;序列被解释为$,因为它出现在属性中并被视为HTML实体.所有其他元素属性也是如此.

<script>元素中,HTML实体根本不被解释,因此它按字面意思显示.