すごく曖昧な質問になってしまうのですが、たぶん HTML 周りのもので、
「本来の区切り文字ではないが、記号など使えない文字が来たら区切り文字として扱われる」
という仕様(実装がそうなっているだけかも)が何処かにあったと思います。
1,2年程度前にネットで見かけてそうなんだーと思った記憶はあるのですが、試してはないはずで、今回ふとしたキッカケでそれを思い出して試そうと思いました。
class 属性で、 "a;b#c" が "a b c" のようになるのだったかな?
と思って試してみましたが、違うようです。
javascript
1;["a,b", "a|b", "a#b", "a!b"].forEach(className => { 2 document.body.innerHTML = "" 3 4 document.body.append( 5 Object.assign( 6 document.createElement("div"), 7 {className} 8 ) 9 ) 10 11 console.log(className) 12 console.log(document.querySelectorAll(".a").length) 13 console.log(document.querySelectorAll("." + CSS.escape(className)).length) 14})
nohighlight
1a,b 20 31 4a|b 50 61 7a#b 80 91 10a!b 110 121
a だけだとマッチせず、記号も含めた場合にマッチしています。
調べてみたら HTML4 の頃から記号も使えるらしく、最近の変更ということではないようです。
他に区切り文字があって、複数書くことができ、記号が使えない(区切り文字になる)ものが思いつかないのですが、何か心当たりはないでしょうか?
ここ数日気になって調べてるのですが、それらしいものが全然見つかりません。
確実と不確定な部分をわけてまとめると、
・確定
- 上記で間違いだった class 属性のような、文字列を記述するもの
- その文字列は何かの文字列で区切ることができる
- class をスペースで区切るような一般的な区切り文字がある
- フリーテキストと違って記号など来れないものがある
- その場合に来れないものが区切りとして扱われる
- それらは通常は区切りとして用いない
- それなりに知識がある方と思っていたのに知らなかったので驚いた(絶対的な指標はないですが、初心者ではない分野でそれを知らずに困らなかった、というくらいで考えてもらえばいいです)
・不確定
- HTML 関係(web関係で、サーバサイドは関係ないはず)
- 区切り文字はスペースじゃないかも
- 日本語は区切りになるのか、文字になるか不明
- 使えない記号がどれか、セレクタみたいな特殊な意味のある記号があったか
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/12 08:00
2017/02/12 15:19