Safari機能拡張のための future 風の通信機能


一昨日の記事でご存じかもしれませんが,Safari機能拡張のためのglobalコードとinjectedコード間の通信ライブラリを作ってましたが,ようやく動き始めたので公開します.

コードと簡単なサンプルコードは github においてあります.

テストコードは以下のような感じです.

 messaging.install('alert',
   function (text, n) { console.log('alert', text, n); });

 messaging.install('add',
   function (a, b, reply) { reply(a + b); });

 function run1() {
   var future = messaging.future_factory();
   future('alert', 'Hello world from global code.', 777);
   future('add', 12345, 6789, function (v) { console.log(v); });
 }

global コードと injected コードの双方に ‘alert’, ‘add’ メソッドを仕込み,それらを future で読んでいます.future(‘add’, …) では第四引数に継続を渡し,injected コードにおける加算結果をコンソールに表示しています.