日常の進捗

主に自分のための,行為とその習慣化の記録

Chrome拡張(7) Chrome拡張とブックマークレット

「11.1 : Introduction to Chrome Extensions - Programming with Text」はChrome拡張に関するイントロダクション.その中で,通常の「サービスやChromeでのブラウジング体験をより便利にする」という目的のChrome拡張ではなく,より多様な価値観へ向けたクリエイティブなChrome拡張を紹介している部分が興味深かった.

クリエイティブなChrome拡張やブックマークレット

ブックマークレットはブックマークバーに設置して,ブラウザで開いているWebページ上でJavaScriptを実行するもの.Chrome拡張より簡易的にページ上のコンテンツにアクセスできる.

ブックマークレット

通常のjavascriptで関数を実行する場合,以下のように書ける.

function hello(){
    alert('hello');
}

hello();

これを即時実行するものにする場合,以下のように書ける.

(function hello(){
    alert('hello');
})();

ブラウザのアドレスバーに直接Javascriptを書いて実行する場合

javascript:(function hello(){alert('hello');})()

ページ内にブックマークレットのリンクを設置する場合

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>BookMarklet</title>
  </head>
  <body>
    <h1>Bookmarklet</h1>
    <p>This is a <a href="javascript:(function hello(){alert('hello');})()">bookmarklet</a></p>
  </body>
</html>

Chromeのようなブラウザのブックマークバーにリンクを設置する場合は,ブックマークバーを右クリックして「ページを追加」から名前(ブックマークバーに表示されるテキスト)とURL(上記で書いてきたようなJavascript)を追加する.

f:id:takawo:20171115010124p:plain

ブックマークレット内で外部jsファイルを実行する書き方

外部jsファイル:bookmarklet.js

(function(){
  console.log('bookmarklet starting');
  let paragraphs = document.getElementsByTagName('p');
  for(let i =0; i < paragraphs.length; i++){
    paragraphs[i].innerHTML = 'kitten';
  }
})();

ブックマークレットに埋め込むJavaScript

javascript:(function(){let script = document.createElement('script'); script.src = 'bookmarklet.js'; document.body.appendChild(script);})()

bookmarklet.jsの設置先に応じてscript.srcのパスは適宜変更する.

リファレンス