新規タブの空白ページでも動作するブックマークレットを作る

Chrome で動作確認した。

通常、ブラウザデフォルトの新規タブや about:blank のような空白ページでは、ブックマークレットが動作しない。JavaScript を実行する HTML ページが存在しない扱いになるからだ。

しかし、Data URL で HTML ページを作ってやれば、一応空白ページを開いている状態でも JavaScript が実行できる。例えば以下のような文字列をブックマークするのだ。

data:text/html,<script>location.href = prompt('Please Input URL');</script>

この文字列を保存したブックマークレットを起動するとプロンプトが開き、プロンプトに入力された URL を location.href で開く、という作りだ。

応用すれば色々作れそうだが、注意点としては、何か通常のページを開いている時、そのページの情報を取得したりはできないということ。document.URL とか document.title とかを参照しようにも、data:text/html で新規 HTML ページを表示してしまっているので、その手前のページの情報は拾えないことに留意。