Content Scriptのクロスサイトリクエストに関する私的メモ
クロスサイトリクエスト
Chrome ExtentionのContent ScriptでXMLHttpRequestする場合はbackground-pageでやらないと駄目なんだぜ?
まあ詳しくはここらへんを見てくださいよ。
http://code.google.com/chrome/extensions/overview.html
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/howto/contentscript_xhr/
これを使うとリンク先の内容を調べてツールチップを出す、みたいなことができたりするの。
例
ぼくはこんな感じで汎用的に使ってる。
この実装だとバックグラウンド側ではなくコンテント・スクリプト側で通信結果を処理することになるんだけど、本当はどっち側で処理するのがいいのかな?
Javascript初心者なんで、よくわからないよ><。
コンテント・スクリプト
chrome.extension.sendRequest({'action' : 'fetchPage', 'url' : url}, function(data) { if (data.text) { //data.textに対する処理を記述 } });
バックグラウンド・ページ
<html> <script> function fetchPage(callback, url) { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(data) { if (xhr.readyState == 4) { if (xhr.status == 200) { var data = xhr.responseText; var target = url callback({"url" : url, "text" : data}); } else { callback(null); } } } xhr.open('GET', url, true); xhr.send(); }; function onRequest(request, sender, callback) { if (request.action == 'fetchPage') { fetchPage(callback, request.url); } }; // Wire up the listener. chrome.extension.onRequest.addListener(onRequest); </script> </html>