Chrome扩展程序:未选中的runtime.lastError:无法建立连接。接收端不存在

时间:2019-03-19 04:20:32

标签: google-chrome-extension

最近,据报道我的应用程序的上下文菜单消失了。如果您删除该应用程序并重新安装,它将可以正常工作。但是消失再次发生。

我发现了一个错误。我不确定该错误是否会导致上下文菜单消失。但是我想解决这个问题,因为我发现的就是这个。

此应用程序显示您在页面中选择的文本。当您在一个常规页面中选择文本并单击浏览器操作按钮时,它可以正常工作。但是,如果您在Google文档上尝试使用它,则会收到错误消息“未经检查的runtime.lastError:无法建立连接。接收端不存在”。

恐怕我不知道该怎么办。我可能有两个问题。如果您能给我一些建议,那将是很大的帮助。

[manifest.js]

{
    "manifest_version": 2,
    "name": "Test Chrome Extension",
    "short_name": "Test",
    "version": "1.0",
    "description": "This is a test.",
    "icons": {
        "128": "128.png"
    },
    "content_scripts": [{
        "matches": ["<all_urls>"],
        "js": ["googleDocsUtil.js", "content_scripts.js"]
    }],
    "background": {
        "scripts": ["background.js"],
        "persistent": true
    },
    "browser_action": {
        "default_icon": {
            "48": "48.png"
        },
        "default_title": "Test Chrome Extension"
    },
    "permissions": [
        "contextMenus",
        "tabs",
        "background",
        "http://*/*",
        "https://*/*"
    ]
}

[background.js]

chrome.contextMenus.create({
    type: 'normal',
    id: 'testchromeextension',
    title: 'Test Chrome Extension',
    contexts:['selection']
});

chrome.contextMenus.onClicked.addListener(function(info,tab){
    if( info.menuItemId == 'testchromeextension' ){
        var selectedText = info.selectionText.replace(/ /g, "\n");
        doSomething(selectedText);
    }
});

chrome.browserAction.onClicked.addListener( function(tab) {
    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
        chrome.tabs.sendMessage(tabs[0].id, {method: "getSelection"}, function(response) {
            doSomething(response.data);
        });
    });
});

function doSomething(selectedText) {
    console.log(selectedText);
}

[content_scripts.js]

chrome.runtime.onMessage.addListener( function(request, sender, sendResponse) {
    if (request.method == "getSelection") {
        var post_val = window.getSelection().toString();
        if ( !post_val ) {
            var googleDocument = googleDocsUtil.getGoogleDocument();
            post_val = googleDocument.selectedText;
        }
        sendResponse({data: post_val});
    }
});

1 个答案:

答案 0 :(得分:0)

我相信,当您更新扩展程序的本地版本,然后尝试将其与旧的/未更新的源代码一起使用时,会导致此错误。

解决方法:在Gallery重新加载本地扩展名之后,请确保刷新正在使用扩展名的页面。您应该不再看到错误。