一昨日の記事でご存じかもしれませんが,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 コードにおける加算結果をコンソールに表示しています.