- | Opera | Chrome | Safari |
定義 | ファイル | config.xml | manifest.json | Info.plist |
仕様 | xml | JSON | xml |
備考 | W3C Widget 規格準拠 | 以下、定義の値はこの JSON のプロパティ名 | 拡張機能ビルダーが生成してくれるので実際に触る事はほとんど無い。 |
Content Scripts | 定義 | UserJS 定義 | content_scripts | 【取り込んだ機能拡張の内容】 |
フォルダ | /include | 自由 | 自由 |
読み込み開始 | ページが読み込まれると同時に。 | run_at で定義。 | 【スクリプトを開始】/【スクリプトを終了】 |
読み込み順 | ファイル名降順 ただし locales 以下はルート以下が全て読み込まれた後。 | 定義順 | 定義順 |
同期 | 非同期 | | |
オリジン | UserJS 定義の@include/@exclude | matches に列挙 | 【ホワイトリスト】/【ブラックリスト】 |
ifrmae | 全て | all_frames プロパティ | 全て |
Background | 定義 | <content> | background_page | 【拡張機能グローバルページ】 |
標準 | index.html | | なし |
取得 | opera.extension.bgProcess | chrome.extension.getBackgroundPage() | safari.extension.globalPage.contentWindow |
Options | 定義 | | options_page | 無し。 |
標準 | options.html | | |
Toolbar Item | 定義/生成 | opera.contexts.toolbar.createItem() | browser_action | 【ツールバー項目】 |
取得 | 生成時の返値を保持 | chrome.browserAction | safari.extension.toolbarItems[0] |
Popup | 定義 | Button.popup へのオブジェクト代入 | browser_action.popup | 【ポップオーバー】 |
Active Tab | 取得 | opera.extension.tabs.getFocused() | chrome.tabs.getSelected(windowId, function(tab){}) | safari.application.activeBrowserWindow.activeTab |
通信 | コールバック | 無し | 有り | 無し |
送信 | content to Bakcgound | opera.extension.postMessage(data) | chrome.extension.sendRequest(data,callback) | safari.self.tab.dispatchMessage(name,data) |
Options/Popup to Bakcgound | background.postMessage(data,origin) |
Background to Content | tab.postMessage(data) | tab.extension.sendRequest(data,callback) | tab.page.dispatchMessage(name,data) |
受信 | Background from Content | opera.extension.addEventListener('message',function(e){...},false) | chrome.extension.onRequest.addListener(function(data,sender,callback){...}) | safari.application.addEventListener('message',function(e){...},false) |
Content from Background | safari.self.addEventListener('message',function(e){...},false) |
Content from Popup | window.addEventListener('message',function(e){...},false) |
返信(background to content) | e.source.postMessage(response) | callback(response) | e.target.page.dispatchMessage(name,response) |
連携 | ページのオブジェクト window にオブジェクトを追加する事で可能。ただし、セキュリティに注意。 | sendRequest/onRequestExternal | window.postMessage などを利用すれば可能。 |