chrome 扩展中不存在 chrome.runtime.onConnect

Posted

技术标签:

【中文标题】chrome 扩展中不存在 chrome.runtime.onConnect【英文标题】:chrome.runtime.onConnect doesn't exist in chrome extension 【发布时间】:2013-03-19 14:30:25 【问题描述】:

我在持久后台脚本 (background.js) 中有以下代码:

chrome.runtime.onConnect.addListener(function(port) 
    console.assert(port.name == "knockknock");
    port.onMessage.addListener(function(msg) 
        if (msg.joke == "Knock knock")
            port.postMessage(question: "Who's there?");
        else if (msg.answer == "Madame")
            port.postMessage(question: "Madame who?");
        else if (msg.answer == "Madame... Bovary")
            port.postMessage(question: "I don't get it.");
    );
);

当我在 Chrome 中加载/重新加载扩展程序时,我收到错误消息

Uncaught TypeError: Cannot call method 'addListener' of undefined 

代码取自 Chrome 扩展的文档站点,因此它可能是工作代码,只是缺少一些设置。

清单看起来像:


    "manifest_version": 2,
    "name": "TestMessaging",
    "version": "1",
    "background" : 
        "scripts": ["background.js"],
        "persistent": false
    ,
    "browser_action": 
        "default_icon" : "icon.png"
    ,
    "content_scripts": [
        
            "matches": ["http://*/*", "https://*/*"],
            "js": [
                "contentscript.js"
            ]
        
    ],
    "permissions" : [
        "tabs",
        "https://*/*",
        "http://*/*"
    ]


感谢您的帮助!

【问题讨论】:

文档似乎有误。 chrome.runtime.onConnect 未定义 (Chrome 25)。您可以改用chrome.extension.onConnect(可以使用chrome.extension.connect 触发)。 chrome.runtime.onConnect 已添加到 Chrome 26 中(昨天稳定了)。在此之前,您仍然必须使用 chrome.extension.onConnect。 @RobW 谢谢!你刚刚为我节省了大量时间。非常感谢。 【参考方案1】:

改用chrome.extension.onConnect(可以用chrome.extension.connect触发)。

【讨论】:

以上是关于chrome 扩展中不存在 chrome.runtime.onConnect的主要内容,如果未能解决你的问题,请参考以下文章

iOS 共享扩展在 Chrome 中不起作用

上传文件在 Chrome 扩展选项页面中不起作用

Chrome 扩展程序 - 在新打开的选项卡中不起作用

mailto 链接在 chrome 扩展弹出窗口中不起作用

Paypal 捐赠按钮在 chrome://extensions/ 中不起作用(OptionsV2)

Ag 网格:在运行时自动调整列在 chrome/IE 11 中不起作用