ブラウザ(Google Chrome)で短縮URLをクリップボードにコピーするブックマークレット


Google Chrome だとBookmarklet(javascript)で直接コードからクリップボードにアクセスする事は基本的にできない。

そこで、ブックマークレットを押したときにクリップボードへコピーする方法として、
一旦、空のオブジェクトを仮置きして、選択状態にしてコピーしてしまえばよい。

只コピーするだけなら、上記の内容で問題ない。
しかし、今回求めているのは 短縮URLサービスの処理結果、
つまりは外部サービスへPOSTした結果を受け取ったのちに、クリップボードへコピーする方法だ。

先述の方法では、POSTコールバック内に

ret = document.execCommand('copy');

を書いたとしても、実行結果は必ずfalseとなる。

これは、Chromeがクリップぼおーどへのコピーをユーザーアクションがトリガーの場合にしか認めていないからだ。
よって、方法としてはPOSTした処理結果の応答が返ってくるのを待って、同期的に処理を行うしかない。

結果からいうと、 XMLHttpRequestをsendした後、Timeoutを待てばよい。
以下に、コードを公開しているので参照されたし。

GitHub - Ohurochan/ClipboardCopyBookmarklet: Javascript Bookmarklet : copy the short url to clipboard
Javascript Bookmarklet : copy the short url to clipboard - GitHub - Ohurochan/ClipboardCopyBookmarklet: Javascript Bookmarklet : copy the short url to clipboard

Timeoutは安易的かもしれないが、利用シーンを考えると十分である。

利用にあたっては自己責任である事に注意。


タイトルとURLをコピーしました