ややこしい上に公式ドキュメントでは分かりにくいし、ネット上にも情報が少ないのでメモ。
間違っていたら指摘お願いします。
#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は関数名。