Problem/Motivation
On both a live project and on a simplytest.me empty site, when I enter incorrectly spelled text via the Chrome 57 browser, I see the word underlined with a red line.
The only trouble is, when I right-click to correct the spelling, I am presented with the ckeditor-driven cut/copy/paste options and not the native browsers menu so I cannot correct the spelling. The same effect happens whether I have cut/copy/paster buttons in the ckeditor or not.

Proposed resolution
Investigate how to allow site-builder to choose the behaviour of CKEditor. Will it
- Display native SCAYT wavy red lines but show the CKE context menu (current behaviour)
- Disable native SCAYT completely and show the CKE context menu
- Display native SCAYT and show the native context menu
Remaining tasks
User interface changes
API changes
Data model changes
| Comment | File | Size | Author |
|---|---|---|---|
| #9 | Create Article _ spell_check_issue.png | 11.55 KB | ok_lyndsey |
Comments
Comment #2
rachel_norfolkJust adding an old, possibly related, issue. Seems we turned on native SCAYT so we see the errors. It's just that we can't then correct them!
Being able to Command-right-click to get to the hidden native context menu might be possible for administrators but not something that can be taught to thousands of end users!
Comment #3
rachel_norfolkComment #4
rachel_norfolkSo, the current default ckeditor config is defined at http://cgit.drupalcode.org/drupal/tree/core/modules/ckeditor/src/Plugin/... with
'disableNativeSpellChecker' => FALSE,. What I think we need is to make this configurable through the UI.Comment #5
wim leersIt seems you've read #2307141: Enable browsers' (native) spell checker in CKEditor and the difficult weighing of choices we did there. There is no great choice, it's always choosing the lesser of two evils.
I don't see how making
disableNativeSpellCheckerconfigurable would help at all. It's set to FALSE so that at least you get the red underlining of incorrectly spelled words. If you change it to TRUE, then you won't even have that.So, I'm afraid this is a case of , sadly :(
Comment #6
rachel_norfolkSo how about we add something to the compose tips to explain how to use the system as it stands? We can do that, at least?
As things stand right now, we might not have a perfect solution but it appears to the end user to be a bug. That’s how they are reporting it.
Comment #7
GrantHorizons commentedCurrently I see ONLY "Paste ctrl-V" when I right click on a misspelled word. THAT is a BUG!!
(Win 10 Firefox 53)
IF you're going to show the user the red underline for misspelled words, and can't give them something that WORKS AS IT SHOULD, it's better to show the user NOTHING - in other words disable right-click, don't show them erroneous information/possibilities. OR tell them in a tooltip/right click something USEFUL like "ctrl or command right click to correct spelling".
Or DO NOT show the underlined misspelled words at all - in other words don't give them false hope.
Or make it work like it should!
Comment #8
liampower commented+1 it isn't a great user experience to begin with for CMS users to have to use ctrl + right click, let alone end users.
Comment #9
ok_lyndsey commentedI agree that this behaviour is confusing, I have just thought it was a D8 bug.
I believe expected behaviour is that when an item is highlighted as misspelled by being underlined in red, a right mouse click will present spelling suggestions. This is the behaviour in CKEditor in D7 - and it's also the behaviour in this text box I'm typing this comment in now.
IMO it's an important part of usability and the editor experience which is important. Even reading through the comments here I'm unsure how I would explain the behaviour to a client if it is decided it's working as normal "the word is underlined in red because it's misspelled, go get a dictionary and figure it out"? :)
Screenshot of error and right mouse click:

Comment #10
wim leers#6 + #8 + #9: that may very well be, but there's nothing we can do to fix this. It's a browser limitation. Drupal can't fix that.
#7: no need to be rude.
#9:
This has never been an expectation for me. The underlining itself is sufficient for me: I'll fix it myself, because very often, the suggestions include lots of wrong suggestions too. So, for me, just the underlining is sufficient. And coincidentally, that's also as far as browser limitations will let CKEditor go.
Again, please read #2307141: Enable browsers' (native) spell checker in CKEditor for the full discussion. Specifically, see #2307141-6: Enable browsers' (native) spell checker in CKEditor.
We have to choose between either:
There's no good choice.
I'm personally okay with removing the CKEditor context menu, so that this would become possible. But doing so would be a backwards-incompatible change.
If it'd help, I'm happy to create a Drupal 8 contrib module that disables the CKEditor context menu, so that you can use the native context menu, and hence do get spelling/grammar corrections.
But do note that this was discussed at length in #2307141: Enable browsers' (native) spell checker in CKEditor…
Comment #11
rachel_norfolkSo, what it seems is some of us (both site-builders and end-users) have a different understanding to that of the original issue. That’s fair enough and can happen.
How about as an option we leave this issue open for a time, not to change the decision already made but to investigate whether it is possible to create a way to easily allow the default behaviour to be changed?
I’m prepared to look into that.
Would that be reasonable?
Comment #12
wim leersOf course! :)
Comment #13
wim leersReflecting #11.
Comment #14
ok_lyndsey commentedThanks Wim - apologies for going over old ground. I work with not for profits and government so they get hung up on stuff like this, and worse they add it to long lists of requirements that rule a tender out.
Interested in where the govcms people in Australia go with this - they should have need for restricted ckeditor + spell check. I'm thinking the D8 contrib module is probably a good idea.
Agree with Rachel that leaving this open is worth it, also for ease of identifying how there is an issue. The Enable browsers' (native) spell checker in CKEditor task is great and comprehensive but long.
Comment #15
mlewand commentedJust to put my two cents: there are two most reasonable ways to go either use SCAYT with CKEditor's custom context menu or you can go with native spellcheck and native context menu.
Going without a possibility to correct typo from a context would be an annoyance for certain group of end users.
I'd suggest going for going SCAYT + custom context menu. SCAYT integrates well with CKE (undo and whatnot), provides the same cross-browser experience.
Also dropping custom context menu will result with users not being able to use tabletools plugin utility, which ATM is the only way to access certain features, such as drop a column etc. It's a flaw that we want to fix in future releases, but that's how it works now.
Having above in mind I'd go with SCAYT now, and revisit it in year or two to see if target browsers have provided APIs for context menu customization.
Comment #16
wim leersSCAYT (http://ckeditor.com/addon/scayt) is not an option, because it depends on a 3rd party service.
Comment #17
rachel_norfolkAgreed - the scope of this issue will only be to examine if it is possible to allow site builders to choose
or neither of these options.
Comment #18
rachel_norfolkUpdated Issue Summary to reflect this.
Comment #19
diamondseaI needed an immediate solution for some of my clients, so I created a project that disables the contextmenu, tabletools, and tableresize plugins via a tiny module:
https://www.drupal.org/project/ckeditor_browser_context_menu
I would love for this to be a customizable option in the CKEditor module itself.
Comment #20
Bojhan commentedLets leave this issue open, but I am also keen on not fixing a standard CKE behaviour unless we solve it on the editor level itself.
Comment #21
wim leersComment #23
wim leersComment #24
mlewand commentedIn case you can't use SCAYT, then your only option (keeping spell check) is to use native context menu.
CKEditor has no way to manipulate browser spell checking (no API), so this function can only be manipulated only using native context menu.
There's a feature in CKE4 (enabled by default) that ctrl/cmd+click gives you a native context menu (see "Using Native Browser Spell Checker" in https://sdk.ckeditor.com/samples/spellchecker.html).
Comment #25
wim leersComment #27
pawel_r commented#19 Thank you diamondsea, great workaround!
Comment #34
quietone commentedCKEditor has been removed from core, CKEditor 4 is removed from Drupal Core in 10.0.0