- From: Hallvord R. M. Steen <hallvord@opera.com>
- Date: Thu, 03 May 2012 13:10:32 +0200
- To: public-webapps@w3.org
Boris Zbarsky <bzbarsky@mit.edu> skreiv Wed, 02 May 2012 20:10:24 +0200 >> With my used-to-maintain-a-rich-text-component hat on, I would have >> preferred a property to an event as an author. > > Ah, nice. In that case, my vote is certainly for a mechanism like that! I suggest spec'ing something like navigator.UI.copyEnabled navigator.UI.cutEnabled navigator.UI.pasteEnabled to be writeable boolean properties. Before opening a relevant menu, the implementation can check if a script has set these properties and enable or disable/hide commands accordingly. The only use case this doesn't handle is to conditionally enable browser UI depending on what format(s) are available on the clipboard. A web app author might want 'paste' enabled if there is plain text on the clipboard, but not if there is RTF text or an image - or vice versa, depending on the app's nature and requirements. This is the only good use case for beforepaste events I can think of (given, of course, that we allow the listener to check what formats are available). I see no use cases for beforecut and beforecopy that are not (better) handled with properties. Extending oncontextmenu to allow disabling/hiding menu entries was suggested elsewhere in this thread. While that idea may have merit for other use cases, opening the "Edit" menu will not fire oncontextmenu AFAIK, and neither does an oncontextmenu listener typically have access to information regarding what formats are on the clipboard. Hence, my current thinking is that it might be best to spec beforepaste *only*. If I do so, I'd prefer not doing magicish things with event.preventDefault() to disable/enable browser UI. I think it would be easier for authors to write something like window.addEventListener('beforepaste', function(event){ if(event.clipboardData.types.indexOf('text/plain')>-1){ navigator.UI.pasteEnabled=true; }else{ navigator.UI.pasteEnabled=false; } }); Any criticism of this way forward is welcome. (For example, would authors expect *Enabled properties to be sync'ed by the implementation and show the actual state of the UI, rather than being set from the script? Would methods be better - navigator.UI.setCopyEnabled()?) -- Hallvord R. M. Steen Core tester, Opera Software
Received on Thursday, 3 May 2012 11:11:24 UTC