簡體   English   中英

Chrome擴展程序sendMessage從popup.html到content.js不起作用

[英]Chrome Extension sendMessage from popup.html to content.js not working

我正在嘗試構建一個擴展程序,該程序將數據從popup.html發送到選項卡圓頂,但是我無法使sendMessage正常工作,我也不明白為什么。 我正在遵循以下准則: https : //developer.chrome.com/extensions/messaging.html

這是我的資料來源:

manifest:
{
   "manifest_version": 2,
   "name": "OMG Campaign Preview Maker",
   "description": "Easy OMG Campaign Preview Maker",
   "background": {  "scripts": ["background.js"]},
   "version": "0.1",
   "content_scripts": [
        {
          "matches": ["http://*/*", "https://*/*"],
          "js": ["jquery-1.7.min.js", "content.js"]
        }
    ],
   "browser_action": {
      "default_icon": "logo_128.jpg",
      "popup": "popup.html",
      "default_popup": "popup.html"
   },
   "icons": {
      "128": "logo_128.jpg"
   }
}

popup.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="jquery-1.7.min.js"></script>
<script type="text/javascript" src="popup.js"></script>
</head>
<body>
<h1>Clicks</h1>
<p>extra1:
  <input type="text" name="extraclicks[]" id="extra1">
  <br>
  extra2:
  <input type="text" name="extraclicks[]" id="extra2">
  <br>
  extra3:
  <input type="text" name="extraclicks[]" id="extra3">
  <br>
  <br>
  <input type="submit" name="sendclicks" id="sendclicks" value="Invia Clicks">
</p>
</body>
</html>

popup.js

function sendClicks(){
    console.log("popup.js > sendClicks()");
    var clicksArr = new Array();

    $("input[name='extraclicks\\[\\]']").each(function(i, value){
        clicksArr.push($(this).val());
    });

    chrome.tabs.getSelected(null, function(tab) {
        console.log("popup.js > tab id: "+tab.id)
        chrome.tabs.sendMessage(tab.id, {type:"clicks" },
            function(response) {
                console.log(response.msg);
            }
        );
    });
    console.log("avra' inviato?");
}

$(function(){
    console.log("popup.js > OMD Extension ready");
    $('#sendclicks').click(function(){sendClicks();});
});

content.js

chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
    console.log("content.js > onMessage");

    if (request.type == 'clicks') {
        console.log("content.js > clicks");
        sendResponse({msg: "success"});
    }
});

雖然我可以在控制台中完美地看到從popup.js生成的日志,但看不到content.js啟動的任何日志。 我究竟做錯了什么?

糟糕,我想您只是將消息發送到popup.js本身...

popup.js中的getSelected偵聽popup選項卡(也是chrome中的一個選項卡)的活動,因此,選項卡ID實際上是彈出式選項卡,而不是您的content.js插入的選項卡

BTW getSelected已過時。 嘗試替代方法? http://developer.chrome.com/extensions/tabs.html#method-getCurrent

好吧,我很愚蠢……錯誤的事情是……我正在觀看的檢查器頁面。 content.js內部的“ console.log”打印在TAB INSPECTOR CONSOLE上,而不是擴展名上!

我希望它會幫助其他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM