javascript - chrome extension to Send Message from popup to content script - Stack Overflow

I,am developing an extension in which i have to extract data from linkedin profile page when user press

I,am developing an extension in which i have to extract data from linkedin profile page when user press button on popup. I,am passing message from the popup.js page to contentscript and in response i will get data extracted from linkedin profile page by contentscript so that i can display it in popup.html. But I,am getting error when i inspected the popup.html. The error is:

Port: Could not establish connection. Receiving end does not exist. lastError:29
Error in event handler for 'undefined': Cannot read property 'farewell' of undefined
TypeError: Cannot read property 'farewell' of undefined
    at chrome-extension://kdfgoafjicddfffdbfofdmckejemfije/popup.js:6:25
    at <error: illegal access>
    at Event.dispatchToListener (event_bindings:356:21)
    at Event.dispatch_ (event_bindings:342:27)
    at Event.dispatch (event_bindings:362:17)
    at Object.chromeHidden.Port.dispatchOnDisconnect (miscellaneous_bindings:258:27)

For reference, my manifest file is:

{
    "name": "SoftwareGrid",
    "version": "0.5",
    "icons": { "16": "icons/16.png","48": "icons/48.png", "128": "icons/128.png" },
    "description": "Shows user cresidentials on Linkedin",
    "permissions": [
        "cookies",
        "tabs",
        "/*"
    ],

    "browser_action": {
        "default_title": "Show Profile",
        "default_icon": { "16": "icons/16.png","48": "icons/48.png", "128": "icons/128.png" },
        "default_popup": "popup.html"
    },

    "background": {
        "scripts": ["jquery-1.7.2.min.js","background.js"]
    }, 

    "content_scripts": [{
        "matches": ["/*"],
        "all_frames": true,
        "js": ["jquery-1.7.2.min.js", "script.js"],
        "run_at": "document_end"
    }],

    "web_accessible_resources": [
        "icons/i1.png"
    ],

    "manifest_version": 2
}

My popup.js file:

function sendClicks() {
    console.log("popup.js > sendClicks()");

    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
        chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
            console.log(response.farewell);
        });
    });

    console.log("avra' inviato?");
}

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

My contentscript file

chrome.runtime.onMessage.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"});
});

Plz help!

I,am developing an extension in which i have to extract data from linkedin profile page when user press button on popup. I,am passing message from the popup.js page to contentscript and in response i will get data extracted from linkedin profile page by contentscript so that i can display it in popup.html. But I,am getting error when i inspected the popup.html. The error is:

Port: Could not establish connection. Receiving end does not exist. lastError:29
Error in event handler for 'undefined': Cannot read property 'farewell' of undefined
TypeError: Cannot read property 'farewell' of undefined
    at chrome-extension://kdfgoafjicddfffdbfofdmckejemfije/popup.js:6:25
    at <error: illegal access>
    at Event.dispatchToListener (event_bindings:356:21)
    at Event.dispatch_ (event_bindings:342:27)
    at Event.dispatch (event_bindings:362:17)
    at Object.chromeHidden.Port.dispatchOnDisconnect (miscellaneous_bindings:258:27)

For reference, my manifest file is:

{
    "name": "SoftwareGrid",
    "version": "0.5",
    "icons": { "16": "icons/16.png","48": "icons/48.png", "128": "icons/128.png" },
    "description": "Shows user cresidentials on Linkedin",
    "permissions": [
        "cookies",
        "tabs",
        "http://www.linkedin./*"
    ],

    "browser_action": {
        "default_title": "Show Profile",
        "default_icon": { "16": "icons/16.png","48": "icons/48.png", "128": "icons/128.png" },
        "default_popup": "popup.html"
    },

    "background": {
        "scripts": ["jquery-1.7.2.min.js","background.js"]
    }, 

    "content_scripts": [{
        "matches": ["http://www.linkedin./*"],
        "all_frames": true,
        "js": ["jquery-1.7.2.min.js", "script.js"],
        "run_at": "document_end"
    }],

    "web_accessible_resources": [
        "icons/i1.png"
    ],

    "manifest_version": 2
}

My popup.js file:

function sendClicks() {
    console.log("popup.js > sendClicks()");

    chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
        chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
            console.log(response.farewell);
        });
    });

    console.log("avra' inviato?");
}

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

My contentscript file

chrome.runtime.onMessage.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"});
});

Plz help!

Share Improve this question edited Oct 5, 2013 at 12:54 Walery Strauch 7,0728 gold badges54 silver badges60 bronze badges asked Oct 5, 2013 at 12:11 saadsafsaadsaf 1,4511 gold badge17 silver badges28 bronze badges 4
  • 1 It works for me. Maybe you have done error on debug and you have changed your tab? If you are using chrome.tabs.query({active: true, currentWindow: true}, ... this tab have to be open and active while you are debugging, otherwise listener on script.js isn't called. – Walery Strauch Commented Oct 6, 2013 at 11:52
  • Thanks for the help, but i was stupid as there was an error in my content script – saadsaf Commented Oct 6, 2013 at 12:16
  • 3 What was the error in your content script? Can you put the correct file as an answer? – makenova Commented Feb 3, 2014 at 1:14
  • 2 This question is hanging in popular unanswered questions for [google-chrome-extension] tag. Since this question is, essentially, answered - please either post and accept an answer, or delete the question if you feel it's not worth keeping. – Xan Commented May 9, 2014 at 9:05
Add a ment  | 

1 Answer 1

Reset to default 3

You may have to add this in your manifest:

"permissions" : ["tabs"]

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744723262a4590037.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信