document.querySelector や document.querySelectorAll で、数字から始まる ID をそのまま指定するとエラーになる。
※ document.getElementById はエラーにならず取得できる。
※ DOM じゃないけど、jquery セレクタもエラーにならず取得可能。
自分用の GM スクリプトを作った際、先頭数字の ID を使っている web サイトがあったので・・・
普通は、先頭数字にはしないと思うのでレアケース?
※ document.getElementById はエラーにならず取得できる。
※ DOM じゃないけど、jquery セレクタもエラーにならず取得可能。
console.log(document.querySelector('#20150821abc'));
// Error: An invalid or illegal string was specified
console.log(document.getElementById('20150821abc'));
// <div id="20150821abc">
// 上記の div 要素は、このページ内に含まれているので、firebug・開発者ツールなどで確認可能
解決手段
querySelector は CSS セレクタを指定するものなので、CSS セレクタのエスケープ方法(コードポイント指定)で、先頭数字の ID を指定することができる。
// エスケープ方法は 2 通り
console.log(document.querySelector('#\\32 0150821abc')); // '\3' + (digit) + ' '
console.log(document.querySelector('#\\0000320150821abc')); // '\00003' + (digit)
// <div id="20150821abc">
// もちろん、CSS の記述でも使用可能
自分用の GM スクリプトを作った際、先頭数字の ID を使っている web サイトがあったので・・・
普通は、先頭数字にはしないと思うのでレアケース?
0 件のコメント:
コメントを投稿