8

私は、ユーザがポップアップでボタンを押したときに、リンクされたプロファイルページからデータを抽出する必要がある拡張機能を開発中です。私は、popup.jsページからcontentscriptにメッセージを渡しています。応答では、私はpopup.htmlで表示することができるように、contentscriptによってlinkedinプロファイルページからデータを抽出します。しかし、私はpopup.htmlを調べるとエラーになっています。エラーは次のとおりです。参考のためクロムエクステンションをポップアップからコンテンツスクリプトに送信する

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) 

、私のマニフェストファイルは、次のとおりです。

{ 
    "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.com/*" 
    ], 

    "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.com/*"], 
     "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 
} 

マイpopup.jsファイル:

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(); 
    }); 
}); 

マイcontentscriptファイル

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!

+1

。デバッグ時にエラーが発生し、タブを変更した可能性がありますか? 'chrome.tabs.query({active:true、currentWindow:true}、...'を使用している場合は、デバッグ中にこのタブを開いてアクティブにする必要があります。そうでなければ 'script.js'のリスナーは呼び出されません –

+0

助けてくれてありがとうございましたが、私のコンテンツスクリプトにエラーがあったのでばかげていました – saadsaf

+3

コンテンツスクリプトのエラーは何ですか?答えとして正しいファイルを置くことができますか? – makenova

答えて

3

あなたがマニフェストにこれを追加する必要があり:それは私の作品

"permissions" : ["tabs"] 
関連する問題