Bookmarkletの作成Tips
Contents
なにかツールを作るまでもないが、ブラウザ上での作業を簡略化したい場合、ブックマークレットを使うケースがあり、色々と工夫していたら一つの記事になりそうだなと思ったので、いつも使っているTIPSを共有します
ブックマークレットって?
ブックマークから起動する簡易的なプログラムです。
ブックマークのURLのところにjavascript:
からスタートする文字列を入れると、JavaScriptが動くというものです。
JavaScriptが動くので基本何でもできるのですが、入力欄が一行なので開業をベースとした通常のJavaScriptとは違った書き方を推奨されます。
書き方のコアコンセプト
- 基本的に短めにする
- カンマやセミコロンなどで明示的に文の区切りを指定する
TIPS
クロージャーでくくる
ブックマークレットはグローバル変数を汚染するため、スコープを制限するためにクロージャーでくくることが推奨されています
Google Chromeでは下記のようにするだけでOKです
|
|
document等の外部変数を注入する場合は下記のように引数に追加します。
|
|
まぁ推奨されているとはいえ、自分用の即席ツール作るようなときが多いのであんまりやってないことが多いです…(カッコが多くてよくわからんくなる)
bindを使ってよく使う関数を簡略化する
ブラウザ上で動くツールを作る際、基本的にその画面に作用するような処理を書くことになるかと思います。
- document.querySelector()
- document.createElement()
これらは非常に便利な反面、文字数が非常に多いので、下記のように短縮し、処理の最初の方に記述しておきます
|
|
こうすることによって
|
|
のような形で記述することが出来ます。 ここで大事なのはbindを使うことです。bindを使わないとIllegal invocationエラーが発生します。
クリップボードにコピーする
クリップボードにコピーするには、devtool上で使えるcopy()
は使えないため、DOM操作をした上で、 execCommand('copy')
をして上げる必要があります。
クリップボードにコピーする際はタブ文字等HTMLタグに影響する文字列もコピーしたいケースがあるので、個人的には textarea
タグを用いてコピーするのが好みです。
|
|
コピーしたいときは、スプレッドシートに貼り付けたいケースだったりするので、文字列を配列にしてタブ文字で結合するのも簡単なTIPSになります。
|
|
最後に結合する
上記のままでは当然ブックマークバーに入りません。一行にする必要があるのですが、僕はVIMをよく使っているので、下記のコマンドを実行することで簡単に結合しています。
|
|
まとめ
ブックマークレットを使いこなすことによって、作業効率が上がるケースは多いかと思います。ここにないTIPSなどあれば教えてもらえると嬉しいです!
Author kotamat
LastMod 2020-10-26 (38d6ec9)