9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Chromeを簡易電卓にする。(検索エンジンのカスタマイズでJavaScript疑似プロトコルを使ってみる)

Last updated at Posted at 2014-02-24

#概要
Google Chromeは検索エンジンを自由にカスタマイズできる。
chrome://settings/searchEngines
↑これをアドレスバーに貼り付けると設定ページが開く。

これに疑似プロトコルが使えることを知ったのでちょっと使ってみた。

##検索エンジンのカスタマイズについて
アドレスバーにキーワードを打ってスペースを押し、検索したい文字列を入力してエンターを押すと
設定したURLの「%s」の部分がその文字列に置換されてアドレスバーに入力される、というだけ。
複数「%s」があれば全て置換される。

普通はこんなふうに登録する。

項目 入力内容
名前 ゆーちゅーぶ
キーワード y
URL http://www.youtube.com/results?search_query=%s

キーワードを打ってスペース、という動作が何となく気持ち良くて好き。
ちなみにアドレスバーにはWindowsなら「ctrl+l」Macなら「command+l」で移動できる。

#簡易電卓にする
javascript:void(prompt('%s',eval('%s')))

「1+1」みたいに入力すれば答えが表示される。
これで簡単な計算のためにわざわざGoogle先生を召喚する必要は無いし、答えは即コピーできる。

「"abc".length」とか「"abc".match(/.c/)」みたいに文字列を使うことも一応可能。
(文字列には「"」派なので「'」で囲んだ)

ボタンはどっちも押しても消えるだけ。エンター押しても消せる。
エラーが出たら何も表示されないので注意。

#その他

###コンソールに出力するには
javascript:console.log("%s")
コンソールはWindowsなら「control+shift+j」、Macなら「command+option+j」で表示できる。
WindowsではF12を押してConsoleタブを表示するのと同じ。

###検索エンジンで検索するには
javascript:location.href="http://search.yahoo.co.jp/search?p=" + "%s"
このままだと全く意味ない。

###JavaScriptを一行実行するには
javascript:(function(){%s})()
ブックマークレット作ってるとき、Chromeだと「javascript:」で始まる文字列をアドレスバーに貼り付けると省略されてしまうので。
一行実行したいだけならコンソール使ったほうがいいけど、いちいち表示するのめんどくさいときとか。。

###URLの長さ
とりあえず10000文字では実行できた。
糞長いスクリプトで使うものではないと思うのであまり調べてない。
ちなみに、インデントや改行は消さなくてもそのまま動く。

###応用すればできそうな(気がする)こと

  • URLに検索文字列が含まれない検索エンジンで検索する (メソッドがPOSTのとこ)
  • 普通は文字化けするサイトでも文字化けせず検索する (URLエンコードがUTF-8じゃないとこ)
  • Twitterにつぶやいたりする ⇒ make_now_justさんが作ってくれました!
    Chromeの検索バーからツイートしてみた
9
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?