WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED INVALID
Bug 244708
:has() selector does not accept forgiving selector list
https://bugs.webkit.org/show_bug.cgi?id=244708
Summary
:has() selector does not accept forgiving selector list
Rune Lillesveen
Reported
2022-09-02 02:22:35 PDT
The :has() selector takes a <forgiving-relative-selector-list>[1], but a rule like :has(:unknown) {} is fully dropped in WebKit. There is a failing wpt test in [2]. [1]
https://drafts.csswg.org/selectors/#typedef-forgiving-relative-selector-list
[2]
https://wpt.fyi/results/css/selectors/has-error-recovery.html?label=experimental&label=master&aligned
Attachments
Add attachment
proposed patch, testcase, etc.
Michał Gołębiowski-Owczarek
Comment 1
2022-09-02 03:48:57 PDT
Note that implementing `:has` according to the spec breaks `:has` usage with jQuery for almost all versions in use in the wild:
https://github.com/jquery/jquery/issues/5098
Antti Koivisto
Comment 2
2022-09-02 05:26:15 PDT
We currently do use forgiving parsing for :has() but still fail the selector if the selector lists ends up empty. That is :has(:foo, bar) { } is valid and parses to :has(bar) { } but :has(:foo) is invalid.
Antti Koivisto
Comment 3
2022-09-02 05:26:34 PDT
I suppose this saves us from the jQuery problem.
Michał Gołębiowski-Owczarek
Comment 4
2022-09-02 10:02:28 PDT
See
https://github.com/w3c/csswg-drafts/issues/7676#issuecomment-1235724730
The WebKit behavior still breaks some jQuery selectors. True, it doesn't break: ``` div:has(span:contains('Item')) ``` but it still breaks: ``` div:has(div, span:contains('Item')) ``` Maybe that latter kind of selectors is not used as often in the wild.
Michał Gołębiowski-Owczarek
Comment 5
2022-09-05 05:51:59 PDT
A full fix for future jQuery versions requires implementing
bug 244808
so please have a look at this.
Radar WebKit Bug Importer
Comment 6
2022-09-09 02:23:16 PDT
<
rdar://problem/99736653
>
Karl Dubost
Comment 7
2022-09-15 09:35:06 PDT
Note that there are discussions about this behavior being beneficial currently, as it doesn't break jQuery. See the discussion in
https://github.com/w3c/csswg-drafts/issues/7676
Karl Dubost
Comment 8
2022-09-15 09:36:50 PDT
oops hit return too early. Chrome 106 copies the behavior of Safari.
Tim Nguyen (:ntim)
Comment 9
2023-10-21 14:28:06 PDT
No longer valid with
bug 249914
.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug