It should work just fine if you check the whole eventtarget chain (from the 
target to the window object).

> But that means adding a capturing listener on the window would apply this 
> affect
> to every single element on the page.  If that's an acceptable result, then 
> just
> add the menu item all the time and forget about the event handler logic.



It's not only about the context menu (which could be "scoped" to whatever 
element was targeted by a right-click), it's also about the "Edit" menu or the 
"inline" commands in Chrome's normal application menu. Enabling the menu 
entries all the time breaks with existing UI conventions. Even when using 
Opera's implementation, most pages do of course not add copy/cut/paste event 
listeners in the first place, so on most sites the menu is only enabled when 
there is a selection, the way users expect. And integrating well with what 
users expect from the native UI seems to be important for web apps. I believe 
that for example Google Docxs maintains a selection in a hidden IFRAME with 
editable content in order to manipulate the enabledness of copy/cut menu 
entries. This is of course a horrible hack and 
navigator.setCommandState('copy', true) would be much better.

-- 
Hallvord R. M. Steen
Core tester, Opera Software






Reply via email to