Identical issue was reported for Blink: https://code.google.com/p/chromium/issues/detail?id=313082
It was confirmed after Anne van Kesteren commented that spec does not suggest that isContentEditable depends on synchronous style resolution.
> Example URL:
> Steps to reproduce the problem:
> 1. Create a hidden element
> 2. Add a child element with contenteditable="true"
> 3. Query child element isContentEditable
> What is the expected behavior?
> Return true
> What went wrong?
> Returned false
Reproduced it on Safari 7.0.3.
This issue causes CKEditor to initialize in read only mode if initialization happened in hidden container. This is a common case for SPAs.
Of course it can be workaround by getAttribute('contenteditable') and DOM traversing, but it's hard to control whether editor is visible when reading isContentEditable. And switching to deoptimised version is not good option, because we use this check very often.
Related ticket: http://dev.ckeditor.com/ticket/9814
checked on WebKit-EFL, can't repro this issue.
Doesn't reproduce on the latest nightly builds of WebKit either. It's probably fixed by http://trac.webkit.org/changeset/160966.
In which version of Safari that commit will be included? I can still reproduce this issue on Safari 7.0.4.
Please test with a nightly build from <http://nightly.webkit.org>. We never discuss future Apple releases.
Confirmed that this bug has been fixed by r160966.