人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Google Chrome の拡張機能を作っています。
Tab オブジェクトから Document オブジェクトの取り出し方がいまいち分かりません。

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

●質問者: uradiet
●カテゴリ:コンピュータ インターネット
✍キーワード:Google Chrome URL いまいち ウィンドウ オブジェクト
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Cherenkov
●0ポイント

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

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

◎質問者からの返答

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


2 ● os0x
●70ポイント ベストアンサー

まず、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に通信先のホストを追加する必要あります。

◎質問者からの返答

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

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

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ