サイトに埋め込んだjavascriptからchrome拡張のoptionページを開く
例として、backgroudからコンテンツメニューをサイト側に送って
サイト側のコンテンツメニューから、chrome拡張のoptionページを開きたい場合
サイト側でaタグでchrome拡張のoptionページ、chrome-extention://gesdfsdfer/option.htmlを指定しても、セキュリティ上の理由で開くことはない。popup.htmlページではもちろん問題ない。
が、出来ないわけではない。
1.backgroundからjavascriptを送り込む
2.サイトに送り込んだjavascriptでコンテンツメニューを作成する
3.javascriptでコンテンツメニューをクリックしたときにカスタムイベントを発生させる
4.content_scriptsでカスタムイベントを受け取る
5.content_scriptsで受け取ったイベントをbackgroundにメッセージを投げる
6.backgroundで投げられたメッセージを受け取る
7.backgroundでオプションページを開く
ただ、かなり手間が掛かります。
- backgroundから流し込んだサイト側スクリプト
var e = document.createEvent('CustomEvent'); e.initCustomEvent('fromSiteToBackgroundCall', true, true,'openOptions'); document.body.dispatchEvent(e);
- content_scripts
document.body.addEventListener('fromSiteToBackgroundCall', function (e) { chrome.runtime.sendMessage({type:'fromSiteToBackgroundCall',call:e.detail},function(data){}); });
- backfround
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { if (request.type == 'fromSiteToBackgroundCall'){ switch(request.call){ case 'openOptions': chrome.tabs.create({url:chrome.extension.getURL('options.html')}); break; } } });