次の HTML ページがあるとします。
<html>
<head>
<script type="text/javascript">
function echoValue(){
var e = document.getElementById("/path/$whatever");
if(e) {
alert(e.innerHTML);
}
else {
alert("not found\n");
}
}
</script>
</head>
<body>
<p id="/path/$whatever">The Value</p>
<button onclick="echoValue()">Tell me</button>
</body>
</html>
ブラウザは ID 文字列/path/$whatever
を単純な文字列として扱うと思います。実際には、$
をレンダリングされた表現 ( $
) に変換します。
ただし、JavaScript コードはリテラル文字列を使用$
して要素を検索します。そのため、呼び出しdocument.getElementById
は失敗し、段落の値を取得することはありません。
指定された ID 文字列を文字通り使用するようブラウザに強制する方法はありますか?
編集:
もちろん、. をエスケープする必要がないことはわかっています$
。しかし、Web ページが生成され、ジェネレーターがエスケープを行います。だから、私は自分が持っているものに対処しなければなりません。