2016-03-22 3 views
7

純粋なJSでコピー機能を作成しようとしています。私が持っている問題は、ブラウザがクリップボードへのコピーをサポートしていないときにコピーボタンを表示したくないということです。クリップボードへのコピー機能を使用する前にそれを検出する方法

私はdocument.execCommand('copy')メソッドを使用してクリップボードにコピーしますが、これはサポートが最適ではありません。たとえば、safariにはexecCommand関数がありますが、copyパラメーターはサポートされていません。つまり、関数が存在するかどうかを単に確認することはできません。

このような厄介なサポートのため、私はzeroclipboardの問題を見て出てきたgithubのように、ブラウザの検出の仕方で動かなければならないと思います。 Hereは私が見つけた実装です。

ユーザエージェントを検出する正しい方法はありますか?私はむしろMDNに従って非難されているNavigatorID.userAgentを使用しないでください。

+0

あなたは 'typeof document.execCommand!== 'undefined''を試しましたか? – Zamboney

+1

私が質問したように、safariにはdocument.execCommandという関数がありますが、パラメータ 'copy'はサポートしていません。だからこそ、私はブラウザの検出のルートを下ろすことを考えている。また、そのパラメーターで関数を使用しようとすると、エラーをスローしません。 – silverlight513

答えて

4

私はSafariで以前のバージョン10(9.0および9.1でテスト)に以下の構成

document.execCommand('copy'); 

falseを返すことに気づきました。 この事実は、Safariでの互換性のチェックに使用できます。

if (false == document.execCommand('copy')) { 
    // Logic for handling the copy functionality in some other way 
} 
+0

Firefox(v48)は、私がコンソールで試したときにfalseと警告を返します。 MDNによると、firefoxはv41からコマンドをサポートしています - https://developer.mozilla.org/en/docs/Web/API/Document/execCommand – silverlight513

+0

同じ問題があります。 FF v47とFF v49が 'true'を返すという興味深い事実。 v48のバグのようです。 –

関連する問題