javascript - tutorial - Oyente en una secuencia de comandos de contenido
make a google chrome extension (1)
Para enviar una solicitud desde una página de fondo a un script de contenido, debe usar chrome.tabs.sendRequest
(no chrome.extension.sendRequest
) y proporcionar tab id.
En un script de contenido, no es necesario crear periódicamente chrome.extension.onRequest.addListener
, solo chrome.extension.onRequest.addListener
una vez y estará allí permanentemente.
EDITAR
Para enviar una solicitud desde un script de contenido, debe ejecutar chrome.extension.sendRequest
allí y agregar chrome.extension.onRequest.addListener
a una página de fondo.
Déjame explicar mi problema. Actualmente estoy desarrollando una extensión de Google Chrome que inyecta una barra de herramientas como un iframe en cada página web.
El problema es que necesito, en algún caso, ocultar la barra de herramientas, volver a mostrarla y cosas por el estilo. Basicelly estaba pensando en poner a mi oyente en mi página de fondo, pero es inútil porque esta página no puede manipular el objeto de forma gráfica. Así que mi plan era poner este oyente en un content_script (que puede manipular gráficamente el objeto). Pero el segundo problema es que un script de contenido en oposición a una página de fondo no se ejecuta todo el tiempo, sino solo una vez.
Así que me pregunto si es posible hacer que un script de contenido suene como una página de fondo, al ponerle un círculo o algo así ...
Gracias por adelantado.
He intentado esto:
manifest.json
{
"background_page" : "background.html",
"browser_action" :
{
"default_icon" : "images/extension.png"
//"popup" : "activateToolbar.html"
},
"content_scripts":
[ {
"all_frames": true,
"css": ["css/yourtoolbar.css"],
"js": ["js/jquery.js", "js/yourtoolbar.js", "js/listener.js"],
"matches": ["http://*/*"],
"run_at": "document_end"
} ],
"permissions" : ["tabs", "unlimitedStorage", "http://*/*", "notifications"],
"name" : "YourToolbar",
"version" : "1.1",
"description" : "Make your own Toolbar"
}
toolbar.html
<!-- Close Button -->
<a href="javascript:hideToolbar()"><input type="image" src="images/close.png" name="close" width="18" height="18"></a>
Tool.js
function hideToolbar()
{
chrome.extension.sendRequest({action : "hideToolbar"});
window.webkitNotifications.createHTMLNotification(''instantMessage.html'', ''Ask Show Menu'').show();
}
listener.js
chrome.extension.onRequest.addListener(function(request, sender, sendResponse){
if(request.action)
{
$(''body'').remove();
console.log(''Received Start'');
alert(request.action);
console.log(''Received End'');
}
else
{
console.log(''nothing'');
alert(''Not For Me [listener.js]'');
}
});
background.js
chrome.extension.onRequest.addListener(function(request, sender, sendResponse)
{
if(request.newTab)
{
// Create a new Tab
chrome.tabs.create({url: request.newTab});
}
else if(request.newWindow)
{
// Create a new Window
chrome.windows.create({url: request.newWindow});
}
else if(request.action)
{
chrome.tabs.getAllInWindow(null, function(tabs) {
$.each(tabs, function() {
chrome.tabs.sendRequest(this.id, {"action":"hideToolbar"} );
});
});
}
});
Pero el problema es que addListener no bloqueó la ejecución y simplemente no captó nada ...