tutorial programa make google extension developer desarrollo crear como chrome app google-chrome-extension

google chrome extension - programa - Extensión de Chrome sendMessage error de script de contenido a html de fondo



make extension chrome (2)

Acabo de actualizar mi extensión de Chrome a json versión 2, y estoy tratando de hacer que mi extensión funcione nuevamente. El problema es sendRequest se depreció en el camino. Así que copio el código de https://developer.chrome.com/extensions/messaging.html en mi script y lo modifico a mis propios nombres de variables, y no funciona.

Entonces vuelvo y pongo el código original y todavía no funciona. He leído varias preguntas que son similares [y espero que esto no se cierre como un duplicado, porque ninguno de ellos era lo mismo que mi situación].

manifest.json:

{ "background": { "page": "background.html" }, ... ... ... "content_scripts": [ { "css": [ "style.css" ], "js": [ "jq.js", "script.js" ], "matches": [ "http://*.craigslist.org/*/*.htm*" ] } ], ... ... ... "permissions": [ "tabs", "http://*.craigslist.org/*/*.htm*" ], "manifest_version": 2, "update_url": "http://clients2.google.com/service/update2/crx", "version": "3.0" }

background.html:

<html> <script type=''text/javascript''> 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"}); }); }); </script> </html>

script.js:

chrome.runtime.sendMessage({greeting: "hello"}, function(response) { console.log(response.farewell); });

Ahora ejecuto una página [en craigslist], y voy a la consola y este es el error:

Port error: Could not establish connection. Receiving end does not exist. TypeError: Cannot read property ''farewell'' of undefined at chrome-extension://dhmjefbokfkjpdbigkadjpgjeflchgea/script.js:9:23

Uso Chrome Beta en Ubuntu 12.10 de 64 bits (Google Chrome: 27.0.1453.15 (Official Build 191758) beta)


Está enviando mensajes tanto de su fondo como de su secuencia de comandos de contenido, pero no tratando de recibirlos en absoluto. Intente escuchar los mensajes en uno o ambos lugares. Además, el código en línea está en contra del CSP, así que muévelo a un archivo externo.

Por ejemplo:

manifest.json

"background": { "scripts": ["background.js"] },

background.js

chrome.runtime.onMessage.addListener(function(message,sender,sendResponse){ sendResponse({farewell:"goodbye"}); });

script.js

chrome.runtime.sendMessage({greeting: "hello"}, function(response) { console.log(response.farewell); });

Además, chrome.tabs.getSelected() ha quedado obsoleto, por lo tanto, use chrome.tabs.query() .


script de fondo

chrome.tabs.getAllInWindow(null, function(tabs) { $.each(tabs, function() { chrome.tabs.sendRequest(this.id, {"action":"action_name"} ); }); });

script de contenido

chrome.extension.onRequest.addListener(function(request, sender, sendResponse){ if(request.action === ''action_name'') { alert(''handle event in the content script!!!!'') } });