サファリ拡張機能の設定から注入された JavaScript に変数を渡そうとしています。メッセージを渡すことができましたが、変数を handleMessage スコープ外で使用する方法がわからないため、挿入したファイルで使用できます。handleMessage 関数の変数printerNAMEは、関数の外部からアクセスできないように見えますか?
global.html
safari.application.addEventListener('message', handleMessage, false);
function handleMessage(msg) {
if(msg.name === 'printerName') {
alert(msg.message);
}
var printerName = safari.extension.settings.printerName;
safari.application.activeBrowserWindow.activeTab.page.dispatchMessage('printerName', printerName);
}
注入された.js
var printerNAME;
function handleMessage(msg) {
if(msg.name === 'printerName') {
printerNAME = msg.message;
}
}
if (window.top === window) {
safari.self.addEventListener('message', handleMessage, false);
safari.self.tab.dispatchMessage('printerName', printerNAME);
alert(printerNAME);
}