なぜnavigator.clipboard
常に次のスニペットでundefined
?
var clipboard = navigator.clipboard;
if (clipboard == undefined) {
console.log('clipboard is undefined');
} else {
clipboard.writeText('stuff to write').then(function() {
console.log('Copied to clipboard successfully!');
}, function() {
console.error('Unable to write to clipboard. :-(');
});
}
クリップボードAPIの詳細については、 こちら をご覧ください。
Chromeバージョン:68.0.3440.106。
これはある時点で機能していたはずですが、もう機能していません。 この表 は、クリップボードAPIがChrome(しばらくの間)で実装されていることを示唆しているが、特定の この表 APIメソッドは、APIのどのメソッドもサポートされていないことを示唆していますか?
これには、HTTPSまたはlocalhost(またはChromeフラグを使用して無効化)のいずれか)の安全なOriginが必要です。ServiceWorkerと同様に、この状態はナビゲータのプロパティの有無によって示されますオブジェクト。
https://developers.google.com/web/updates/2018/03/clipboardapi
これは、インターフェースの[SecureContext]で仕様に記載されています。 https://w3c.github.io/clipboard-apis/#dom-navigator-clipboard
window.isSecureContext
の状態を確認して、機能が利用できない理由であるかどうかを確認できます。 セキュアコンテキスト| MDN
そして、はい、 [〜#〜] hsts [〜#〜] を設定して、HTTPがHTTPSにリダイレクトされるようにする必要があります。