【问题标题】:Chrome extension: sendMessage doesn't work #2 [duplicate]Chrome 扩展:sendMessage 不起作用#2 [重复]
【发布时间】:2014-04-19 17:59:50
【问题描述】:

所以我已经问过这个问题了,但是给出的回答没有用(我已经用之前的一些建议更新了这篇文章)...这是该问题的链接,以防万一想试一试这个也想看看之前说了什么。

Chrome extension: sendMessage doesn't work

我已经多次阅读 Google 提供的关于“消息传递”的文档,并且可能已经查看了 10 多个具有相同问题的其他问题,并且已经尝试过对其大多数“解决方案”的一些变体以及什么我有下面...这是黑魔法,对吧?无论哪种方式,都可以。

manifest.json 文件:

{
    "manifest_version" : 2,
    "name" : "Message Test",
    "version" : "1.0",

    "browser_action": { 
        "default_popup": "popup.html"
    },

    "content_scripts": [
        {
        "matches" : ["<all_urls>"],
        "js": ["message-test.js"]
        }
    ]    
}

popup.html 文件:

<html>
<body>
<script type="text/javascript" src="popup.js"></script>
</body>
</html>

popup.js 文件:

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
    var tab = tabs[0];  // do not forget to declare "tab" variable
    chrome.tabs.sendMessage(tab.id, {
        greeting: "Can you hear me?"
    }, function(response){});
});

message-Test.js 文件:

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    if (message.greeting == "Can you hear me?"){
        alert("Test");
    }
    else{
        sendResponse({});
    }
});

警报(“测试”)没有响起...

【问题讨论】:

  • 它对我有用。使用 console.log() 函数对其进行调试,以找出卡在哪一行。同时用这个 log() 替换 alert()。然后你可以检查控制台。注意:弹出窗口的控制台(右键单击>检查元素)与内容控制台 (F12) 不同。

标签: javascript google-chrome google-chrome-extension


【解决方案1】:

您的代码非常适合我。您的内容脚本仅在页面加载时注入,并且消息仅传递到打开的第一个选项卡 - 确认确保在加载扩展程序后刷新您的第一个选项卡,然后单击您的弹出按钮。

【讨论】:

  • 有趣,它的工作。为什么只有单击扩展按钮才会熄灭?当我加载网页时它不会消失吗?
  • 当用户点击 html 按钮时如何让它消失?
  • Popup.js 仅在弹出窗口显示时(即单击按钮时)触发。
  • 如果我不能用 html 做内联 javascript 并且我不希望消息在我点击扩展按钮?我也不确定如何为扩展替换我的 window.onload 脚本,这是一个内联问题,对吗?大声笑
  • 您是否希望用户单击 popup.html 中的按钮来触发消息?
猜你喜欢
  • 2014-06-01
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 2013-12-24
  • 2017-05-26
  • 2012-01-22
相关资源
最近更新 更多