谷歌浏览器。扩展开发

时间:2011-02-01 17:27:31

标签: javascript google-chrome

我整天都努力做这项工作,但没有。为什么,请告诉我,为什么这是#@!*>不想工作吗?

的manifest.json

{
  "name": "My First Extension",
  "version": "1.0",
  "description": "The first extension that I made.",
  "browser_action": {
    "default_icon": "icon.png",
    "popup": "popup.html"
  },
  "permissions": [
    "tabs"
  ],
  "content_scripts": [
      {
      "matches" : ["http://*/*"],
      "js": ["contentscript.js"]
      }
  ]
}

popup.html

<script src="contentscript.js"></script>
<script>

function get(){
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    console.log(sender.tab ? "from a content script:" + sender.tab.url : "from the extension");
    if (request.greeting == "hello")
      sendResponse({farewell: "goodbye"});
    else
      sendResponse({}); // snub them.
  });
}

get();

</script>

contentscript.js

function send(){
  chrome.tabs.getSelected(null, function(tab) {
    chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) {
      console.log(response.farewell);
    });
  });  
}

send();

这告诉我:

Uncaught TypeError: Cannot call method 'getSelected' of undefined
Uncaught TypeError: Cannot read property 'onRequest' of undefined

1 个答案:

答案 0 :(得分:1)

先生,上帝。我做的。不要忘记将清单从“文件”更改为“http”。

<强>的manifest.json

{
  "name": "My First Extension",
  "version": "1.0",
  "description": "The first extension that I made.",
  "browser_action": {
    "default_icon": "icon.png",
    "popup": "popup.html"
  },
  "permissions": [
    "tabs"
  ],
  "content_scripts": [
    {
      "matches": ["file:///*"],
      "js": ["dom.js"]
    }
  ]
}

<强> dom.js

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
 if (request.action == "getDOM")
   sendResponse({dom: document.body.innerHTML});
 else
   sendResponse({}); // Send nothing..
});

<强> popup.html

<html>
<head>
    <style type="text/css">
        body
        {
            min-width: 357px;
        }
    </style>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript" language="javascript">
        $(document).ready(function () {
            chrome.tabs.getSelected(null, function (tab) {
                // Send a request to the content script.
                chrome.tabs.sendRequest(tab.id, { action: "getDOM" }, function (response) {
                    alert(response.dom);
                });
            });
        });
    </script>
</head>
<body>
  <h4>Hello, world!</h4>
</body>
</html>