8

Ben, kullanıcı pop-up butonuna bastığında linkedin profil sayfasından veri ayıklamak zorunda olduğum bir uzantı geliştiriyorum. Ben popup.js sayfasından contentcript'e mesaj iletiyorum ve yanıt olarak popup.html dosyasında görüntüleyebilmem için contentcript'e göre linkedin profil sayfasından veri elde ediyorum. Ama ben popup.html'yi incelediğimde hata alıyorum. hatadır:chrome extension to treni içeriğe mesaj gönder Pop up to contact

Başvuru için
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) 

, benim apaçık dosyasıdır:

{ 
    "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 
} 

Benim popup.js dosyası:

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

Benim contentscript dosyası

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

. Belki hata ayıklamada hata yaptınız ve tabınızı değiştirdiniz mi? Eğer chrome.tabs.query kullanıyorsanız ({active: true, currentWindow: true}, ...) hata ayıklama yaparken bu sekmenin açık ve aktif olması gerekir, aksi takdirde "script.js" üzerinde dinleyici çağrılmaz. –

+0

Yardımlarınız için teşekkürler, ancak içerik scriptimde bir hata olduğu için aptalım: – saadsaf

+3

İçerik komut dosyanızdaki hata neydi? Doğru dosyayı yanıt olarak koyabilirsiniz? – makenova

cevap

3

Sen Manifest'inizde bu eklemek gerekebilir: Bana uyar

"permissions" : ["tabs"]