2012-01-13 11 views
1

私はOKを押すと、選択したタブのhtmlを取得します。しかし、何かが動かない。私は何が欠けていますか?選択したタブからhtmlを取得

manifest.jsonを

{ 
    "name": "extension", 
    "version": "1.0", 
    "description": "discription", 
    "content_scripts": [ 
    { 
     "matches": ["http://www.google.com/*"], 
     "js": ["contentscript.js"] 
    } 
    ], 
    "browser_action": { 
    "default_icon": "icon.png", 
    "popup": "popup.html" 
    }, 
    "permissions": [ 
    "http://ajax.googleapis.com/", 
    "tabs" 
    ] 
} 

popup.html

<html> 
<head> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"> </script> 
</head> 
<body> 
<script> 

function getHTML() 
{ 

chrome.tabs.getSelected(null, function(tab) { 
    chrome.tabs.sendRequest(tab.id, {method: "getHTML"}, function(response) { 
     if(respond.method="getHTML"){    
      alert(response.html); 
     } 
    }); 
}); 

} 
</script> 
<input type="submit" value="OK" onclick ="getHTML()" /> 
</body> 

contentscript.js

chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse) { 
     if(request.method == "getHTML"){ 
      sendResponse({html: document.all[0].outerHTML}); 
     } 
    } 
); 
+0

問題をそのまま見るのは難しいです。 1)「うまくいかない」とはどういう意味ですか?あなたは何を見ますか? 2)拡張機能のデバッグを試しましたか?より重点を置いた失敗のポイントを思いついたのですか? – ronme

+0

アラートメッセージが表示されない場合でも、何も起こらない場合は – Stals

+1

[chromeデバッガ](http://code.google.com/chrome/extensions/tut_debugging.html)でデバッグしようとしましたか? – ronme

答えて

2

を、私は2つのエラーを参照してください。 1)popup.htmlではなく、 "レスポンス" の "応答" をチェックしています。 2)popup.htmlはresponse.methodが "getHTML"であることを確認していますが、content_scriptは "method"フィールドを設定しません。

+0

[クロムデバッガ](http://code.google.com/chrome/extensions/tut_debugging.html)を使用して、何が起こっているのかを確認することを強くお勧めします。それはあなたに将来の多くの時間を節約します。 – ronme

+0

よくできました!私はあなたが素早く前進することを願っています。私はまた、将来のユーザーのためにこの質問を「クリーン」にするために、古いコメントを削除するつもりです。私は同じことをお勧めします:) – ronme

0

document.allはGoogle Chromeでは未定義です!

document.getElementsByTagName("html")[0].innerHTMLでそれを置き換えます

chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse) { 
     if(request.method == "getHTML"){ 
      sendResponse({html: document.getElementsByTagName("html")[0].innerHTML}); 
     } 
    } 
); 
+0

私はそれが正しいとは確信していません - クロムデバッガのdocument.allとdocument.all [0]を試してみると、完璧に動作しているようです。そうでない場合でも、おそらく 'document.documentElement'を代わりに使うことができます。 – ronme

関連する問題