2010-06-24 5 views
1

Je crée une extension qui va lancer un script externe basé sur le texte en surbrillance. Donc, loin, le script fonctionne, sauf que j'ai des problèmes à fermer la fenêtre nouvellement créée.Extension Google Chrome - créer et supprimer automatiquement un onglet

Dans mon background.html, je donne les résultats suivants:

<script> 
function executeScript(selection) { 
    var queryText = 'script:' + selectedText; 
    chrome.tabs.create({url: queryText}); 
    chrome.tabs.getSelected(null, function(tab) { 
    chrome.tabs.remove(tab.id); 
    }); 
} 
</script> 

Mon problème est avec la configuration ci-dessus, il ferme l'onglet avant le chargement « url », il exécute jamais le script.

Si je supprime les lignes getSelected (lignes 5 à 7), cela ouvre l'onglet et exécute parfaitement le script. J'essaie juste d'obtenir la syntaxe pour fermer l'onglet automatiquement après son exécution.

Merci!

+0

Je ne sais pas pour vous, mais vous êtes probablement pour une sorte de 'événement onLoad'. –

+0

Y a-t-il une raison pour laquelle vous n'utilisez pas la fonction 'eval' de Javascript pour exécuter directement le script dans la page d'arrière-plan plutôt que d'ouvrir et de fermer un nouvel onglet? – Chetan

+0

parce que quand l'url va de script: foo, il lance et transmet la variable foo au script. J'essaye d'accomplir la même fonctionnalité que j'ai avec un plugin de Firefox dans le chrome. – Tribalcomm

Répondre

1

Vous ne savez pas exactement ce que vous essayez d'accomplir, mais si vous souhaitez fermer un onglet après l'exécution d'un script, vous devez demander au script d'envoyer une requête "Close Me" à background.html en utilisant chrome.extension.sendRequest.

Il vaudrait peut-être mieux utiliser chrome.tabs.executeScript, ce qui vous permet de passer une fonction (dans laquelle vous pouvez fermer l'onglet) qui est appelée après l'exécution du script.

+0

Fondamentalement, maintenant l'onglet clignote ouvert puis se ferme, mais j'ai besoin du script d'attendre jusqu'à ce que le "script: foo" url est chargé ... – Tribalcomm

+0

Quel type d'URL est "script: foo"? Voulez-vous dire "javascript: foo"? – MooGoo

+0

no. c'est un uri personnalisé que j'ai enregistré. Voir http://www.google.com/support/forum/p/Chrome/thread?tid=2b67d52a2d974418&hl=fr si vous voulez voir ce que j'ai fait ... – Tribalcomm

1

Je voudrais poser une question de suivi à cette question:

Je veux faire une extension Chrome qui passe sur l'URL (et éventuellement un texte sélectionné) d'un onglet donné à mon programme (sous Mac OS X).

Le problème est que Chrome ferme l'onglet immédiatement après son ouverture et ne charge pas vraiment l'URL. La seule façon d'y arriver est d'insérer la commande d'alerte, ce qui n'est pas possible.

J'ai aussi essayé avec

chrome.tabs.onCreated.addListener

mais il est le même résultat, et setTimeout ne semble pas être enregistré du tout.

Mon code:

chrome.browserAction.onClicked.addListener (function (onglet) { chrome.tabs.create ({url: "myApp: ajouter url =" + encodeURIComponent (onglet. url)}, function (tab) { alert ("Votre URL est ajoutée à myApp"); chrome.tabs.remove (tab.id); }); });

J'aurais besoin du même résultat, seulement sans la boîte d'alerte ... merci de votre aide!

1

Cela a fonctionné pour moi:

chrome.tabs.create({ url: yourUrl },function(tab){ 
               setTimeout(function(){chrome.tabs.remove(tab.id);}, 200); 
            }); 
Questions connexes