11
12

More than 5 years have passed since last update.

Safari Extensionの通信

Last updated at Posted at 2014-02-16

ややこしい上に公式ドキュメントでは分かりにくいし、ネット上にも情報が少ないのでメモ。

間違っていたら指摘お願いします。

1.PopOver編

popoverが呼び出される際に起こるイベントのリスナー

//popover.html
safari.application.addEventListener("popover", functionName, true);

popoverのHTMLに記述。popoverのHTMLに関数を置く

popover内からglobalページにアクセスする

//popover.html
safari.extension.globalPage.contentWindow.hoge();

hoge();はglobalページ内の関数。引数や戻り値の設定も可。

popoverを呼び出す

//global.html
safari.extension.toolbarItems[i].showPopover();

globalページなどで呼び出す。
iはボタンの配列。(ボタンが1個なら0)
popoverのコンテンツをglobalでダイナミックに作る場合も、最後にこれを叩く。

2.Message編

injectからglobalへ

//inject.js
safari.self.tab.dispatchMessage(name,hoge);

nameはmessageの名前。
hogeは送信する変数。

//global.html
function huga(e){
    console.log(e.message);
    console.log(e.name);
}
safari.application.addEventListener("message",huga, false);

hugaは関数名。e.messageで渡された変数を受信。
e.nameでmessageの名前を参照。

globalからinjectへ

//global.html
safari.application.activeBrowserWindow.activeTab.page.dispatchMessage(name,hoge);

nameはmessageの名前。
hogeは送信する変数。

//inject.js
safari.self.addEventListener("message",huga,false);

hugaは関数名。

11
12
0

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
11
12