3

あなたが私を助けてくれることを願っています。

アクティブなタブのソースを変数にロードする拡張機能を Chrome で作成しようとしています。

これまでのところ、私は持っています:

マニフェスト.json

{
"name": "My Extension",
"manifest_version": 2,
"version": "0.1",
"description": "Does some simple stuff",
"browser_action": {
    "default_icon": "logo.png"
},

"background": {    
"scripts": ["main.js"]}}

main.js

chrome.browserAction.onClicked.addListener(
  function(tab) {
   var ps1 = document.getElementsByTagName('html')[0].innerHTML;
   window.alert(ps1);
});

ただし、空白ページのページ ソースが読み込まれます。アクティブなページのソースを取得するにはどうすればよいですか。

私はいくつかの読書をしましたが、いくつかのリスニング機能を備えたコンテンツスクリプトを使用する必要があると思います。検索してきましたが、すべての答えは非常に複雑に思えます。どなたか簡単な例を教えていただけませんか。

フィードバックをお待ちしております。

よろしく


AdrianCooneyの回答後の更新:

マニフェストを含むように変更しました

 "permissions": [
  "tabs"
  ]

それからmain.jsで私はやった

chrome.browserAction.onClicked.addListener(function(activeTab) {
 chrome.tabs.query({ currentWindow: true, active: true }, 
  function (tabs) {
   var ps1=document.getElementsByTagName('html')[0].innerHTML;
   window.alert(ps1);
 })
});

拡張ボタンを押すと、そのようなものが得られます

<html></html>
  <body><script src="main.js"></script>
  </body>

...アクティブなタブに関係なく。

chrome.tabs.getCurrent をもう一度試してください

chrome.browserAction.onClicked.addListener(function(activeTab) {
 chrome.tabs.getCurrent(
  function (tabs) {
   var ps1=document.getElementsByTagName('html')[0].innerHTML;
   window.alert(ps1);
  })
 });

上記のバージョンの main.js は、アクティブなページに関係なく、以前のものとまったく同じ出力を提供します。

4

5 に答える 5