- 更新日: 2014年6月5日
- jQuery & JavaScript
ブックマークレットをいつでもJavaScriptのメンテが可能な状態で配布する
サーバー側にブックマークレット本体の JavaScript コードを置いて、配布するブックマークレット用コードから、サーバーに置いたブックマークレット本体の JavaScript コードを読み込むようにさせます。こうしておくと、いつでもブックマークレット用の JavaScript をメンテナンスできるのでメリットが大きい。
サーバー側のブックマークレット本体 JavaScript コード
サーバー側に置く JavaScript コード。ブックマークレットを動作させるためのロジック本体です。Rails の場合であれば public/javascripts 以下に作成します。
public/javascripts/bookmarklet.js
1 |
alert("Hello World!"); |
とりあえず説明用なので、alert のみで。ここに好きなようにブックマークレット用の JavaScript コードを書く。
配布するブックマークレット用の JavaScript コード
以下の配布用コードを作成して、これを配布します。まずは、改行とインデントさせた見やすい形のコード。
1 2 3 4 5 6 7 |
javascript:void(( function(){ var d = document; s=d.createElement('script'); s.setAttribute('src','bookmarklet-url'); d.body.appendChild(s); })()); |
s.setAttribute(‘src’,’bookmarklet-url’); の行で、サーバーに置いた本体 JavaScript コードを読み込んでいます。bookmarklet-url の部分は、サーバー側においた本体コードの URL に変更。
以下は、配布用コードを1行にまとめたバージョンです。改行を削除して、半角スペースを’%20’に置き換える。
1 |
javascript:void((function(){var%20d=document;s=d.createElement('script');s.setAttribute('src','bookmarklet-url');d.body.appendChild(s);})()); |
Rails で配布用コードのリンクをビューに表示
Rails で配布用コードのリンクを表示させる場合は、以下コードを任意のビューに追加します。
1 2 3 |
<p><%= link_to "ブックマークレット", "javascript:void((function(){var%20d=document;s=d.createElement('script');s.setAttribute('src','http://#{request.raw_host_with_port}/javascripts/bookmarklet.js');d.body.appendChild(s);})());" %></p> 上記ブックマークレットを、ブラウザ上部のブックマークツールバーにドラッグ&ドロップしてください。 |
<%= request.raw_host_with_port %> の部分は、ローカルでのテストで localhost:3000 を取得したかったために、request.raw_host_with_port を使いました。ポート番号の必要ない本番環境では、request.domain などで取得しても可。
以上、いつでもメンテンナンス可能な状態でブックマークレットを配布する方法でした。
- – 参考リンク –
- ブックマークレットで外部ファイルを使う方法 | You Look Too Cool
- Bookmarkletの作り方 | WEB PROJECT | 5th Place Project
- 選択範囲の取得について調べた – daily dayflower
- White Box技術部 JavaScriptでの文字列有無判定
- Ruby/Ruby on Rails/”ホスト名:port番号”なHTTP_HOSTみたいなのを得る方法 – TOBY SOFT wiki
- [rails]自分のドメイン名をとるためにはrequest.domainがいいらしい – もぎゃろぐ
- Rails3 事始め: [Rails3] 現在のURLを取得(request オブジェクト)
- jQuery & JavaScript の関連記事
- React.js用にESLintをインストールして設定、JavaScriptコードを楽に検証しよう
- JavaScriptでHTMLコメント要素を取得する
- YahooのJavaScriptマップAPI(YOLP)で地図を描画
- HTML5のGeolocation APIで現在地の位置情報(緯度/経度)を取得するJavaScriptコード
- JavaScriptでキャメルケースを単語に分割
- Browserify + GulpでクライアントのJavaScript / CoffeeScriptでrequire
- JavaScript/jQueryでDOM要素が存在するか確認する方法
- JavaScriptでスクロールを一時的に止める
- JavaScriptでcapitalize、アルファベット一文字目を大文字にする
- JavaScriptでrangeオブジェクトから座標を取得するコード
Leave Your Message!