- From: Michaela Merz <michaela.merz@hermetos.com>
- Date: Wed, 11 Feb 2015 12:34:04 -0600
- To: "James M. Greene" <james.m.greene@gmail.com>, WebApps WG <public-webapps@w3.org>
AFAIK, you can't trigger a clip board request without human interaction.
$('#element).off().on('click',function(e) {
var clip = new ClipboardEvent('copy');
clip.clipboardData.setData('text/plain','some data');
clip.preventDefault();
e.target.dispatchEvent(clip);
});
This unfortunately won't work in my environment since my code is not
'trusted'.
m.
On 02/11/2015 12:21 PM, James M. Greene wrote:
> The current spec still leaves me a bit unclear about if
> implementors must include the ability to feature detect Clipboard
> API support, which I think is a critical requirement.
>
> In particular, I /need/ to be able to detect support for the
> Clipboard API (click-to-copy support, in particular) in advance
> and without the user's interaction in order to know if I need to
> load a Flash fallback or not.
>
> If this is even /possible/ based on the current spec, the only way
> I can see that might make that possible is if executing
> `document.execCommand("copy")` synthetically (without user
> interaction) MUST still fire the `beforecopy`/`copy` events [but
> obviously not execute the associated default action since it must
> not be authorized to inject into the clipboard]. However, I don't
> feel that the spec defines any clear stance on that.
>
> Example detection attempt (more verbose version on JSBin [1]):
>
> ```js var execResult, isSupported = false;
>
> if (typeof window.ClipboardEvent !== "undefined" &&
> window.ClipboardEvent) { var checkSupport = function(e) {
> isSupported = !!e && e.type === "copy" && !!e.clipboardData && e
> instanceof window.ClipboardEvent;
> document.removeEventListener("copy", checkSupport, false); };
> document.addEventListener("copy", checkSupport, false);
>
> try { execResult = document.execCommand("copy"); } catch (e) {
> execResult = e; }
>
> document.removeEventListener("copy", checkSupport, false);
>
> // Should I care about the `execResult` value for feature testing?
> // I don't think so.
>
> if (!isSupported) { // Fallback to Flash clipboard usage } } ```
>
>
> This currently yields poor results, as well as arguably false
> positives for `window.ClipboardEvent` (conforming to an earlier
> version of the spec, perhaps?) in Firefox 22+ (22-35, currently)
> and pre-Blink Opera (<15).
>
> It also causes security dialogs to popup in IE9-11 when invoking
> `document.execCommand("copy")` if you do not first verify that
> `window.ClipboardEvent` is present. That is obviously harmful to
> user experience.
>
> Can we agree upon some consistent feature detection technique to
> add to the spec that can be guaranteed to yield correct results?
> I would love it if it were as simple as verifying that
> `window.ClipboardEvent` existed but, as I mentioned, that is
> already yielding false positives today.
>
>
>
> [1]: http://jsbin.com/davoxa/edit?html,js,output
>
>
>
> Sincerely, James Greene
Received on Wednesday, 11 February 2015 18:34:32 UTC