Google Chrome の拡張機能を作っています。

Tab オブジェクトから Document オブジェクトの取り出し方がいまいち分かりません。

カレントウィンドウのすべてのタブのソースを取り出したいと思っています。
各 Tab オブジェクトの URL やタイトルは簡単に取り出せるのですが、
リファレンスなどを見ても、Document オブジェクトの取り出し方が分かりませんでした。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/05/15 15:29:52
  • 終了:2010/05/16 16:50:23

ベストアンサー

id:os0x No.2

os0x回答回数2ベストアンサー獲得回数12010/05/15 17:20:13

ポイント70pt

まず、Background PageかPopupなどでJavaScriptを実行している(permissionsにtabsは追加済)ということで良いでしょうか?

「Document オブジェクトの取り出し方」ですが、基本的には不可能です。一応、同じ拡張同士が実行しているコンテキストのみであれば直接グローバルオブジェクトを参照できるAPI(chrome.extension.getViews)はありますが、今回のケースには合わないかと思います。

基本的に、拡張のプロセスと表のプロセスは独立している(異なる拡張同士も同様)ので、直接参照し合うようなことはできません。そのかわりにchrome.extension.sendRequest、chrome.extension.onRequest.addListenerを使って(内部的にはJSONを使って)メッセージをやり取りする必要があります。

ただ、ソースを取り出したいというケースでは、バックグラウンドページからXMLHttpRequestでレスポンスを取得するか、chrome.tabs.executeScriptなどでContentScriptsを実行してdocument.documentElement.outerHTMLから取得したソースをsendRequestでバックグラウンドに送り返す方法などが考えられます。どちらにしても、permissionsに通信先のホストを追加する必要あります。

id:uradiet

説明不足で申し訳ないです。

前提とされてることの通り、Popup で、かつ tabs は追加済みでやってます。

やっぱり XMLHttpRequest あたりで取り直すしかないんですね。

ソースを解析したいサイトは固定で決まっているので、permissions いじって XMLHttpRequest でひっぱってこようと思います。

詳しいご説明ありがとうございました!

2010/05/15 18:00:48

その他の回答(1件)

id:Cherenkov No.1

Cherenkov回答回数1502ベストアンサー獲得回数4922010/05/15 15:53:17

URLの頭にview-source:を付ければソースコードを表示することができます。

view-source:http://www.google.co.jp/

id:uradiet

冗談で言ってるんですよね?

2010/05/15 16:29:22
id:os0x No.2

os0x回答回数2ベストアンサー獲得回数12010/05/15 17:20:13ここでベストアンサー

ポイント70pt

まず、Background PageかPopupなどでJavaScriptを実行している(permissionsにtabsは追加済)ということで良いでしょうか?

「Document オブジェクトの取り出し方」ですが、基本的には不可能です。一応、同じ拡張同士が実行しているコンテキストのみであれば直接グローバルオブジェクトを参照できるAPI(chrome.extension.getViews)はありますが、今回のケースには合わないかと思います。

基本的に、拡張のプロセスと表のプロセスは独立している(異なる拡張同士も同様)ので、直接参照し合うようなことはできません。そのかわりにchrome.extension.sendRequest、chrome.extension.onRequest.addListenerを使って(内部的にはJSONを使って)メッセージをやり取りする必要があります。

ただ、ソースを取り出したいというケースでは、バックグラウンドページからXMLHttpRequestでレスポンスを取得するか、chrome.tabs.executeScriptなどでContentScriptsを実行してdocument.documentElement.outerHTMLから取得したソースをsendRequestでバックグラウンドに送り返す方法などが考えられます。どちらにしても、permissionsに通信先のホストを追加する必要あります。

id:uradiet

説明不足で申し訳ないです。

前提とされてることの通り、Popup で、かつ tabs は追加済みでやってます。

やっぱり XMLHttpRequest あたりで取り直すしかないんですね。

ソースを解析したいサイトは固定で決まっているので、permissions いじって XMLHttpRequest でひっぱってこようと思います。

詳しいご説明ありがとうございました!

2010/05/15 18:00:48

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません