hogashi.*

日記から何から

ブラウザで:has()セレクタが実装されてjQueryの:has()セレクタの挙動が変わった話の続き

前回までのあらすじ

blog.hog.as

 ブラウザで :has() を実装した結果、 :querySelectorAll():has() を扱えるようになり、 jQuery:has() を使ったときの挙動が変わってしまっていた。

その後

 結局、 :is :where 以外のセレクタ (含む :has()) を unforgiving にすることが決まっていた。 :is :where だけは forgiving なままとするので、 :has(:is(ほげほげ)) と書くと forgiving な使い方にすることもできる、という態度っぽい (pull request のテストケースで言うと、 :has(:is(.a, 123)) は (123 が invalid なセレクタなので) :has(:is(.a)) として扱われる)。

 Chrome を見ると、 Make :has() unforgiving (Ibb499e25) · Gerrit Code Review とかで実装もマージされていそうに見える。 Chrome のリリースまでの流れに詳しくないけど、近いバージョンで出てきそう? (そのタイミングで jQuery の挙動も戻りそう?)