Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Jouer avec les tabulations en dehors d'une extension

Envoyé par : marinew

Date : 25/10/2007 11:51

Bonjour,

J'ai trouvé 2 articles expliquant comment manipuler les onglets/fenêtres sous Firefox :

Je voudrais savoir s'il est possible d'utiliser ces bouts de code en dehors d'une extension Firefox, dans une fonction JavaScript d'une page HTML, pour donner le focus à une tabulation particulière, par exemple. En effet, j'ai fait pas mal de tentatives (Cf mon post ici ), mais en vain. Je me tourne donc vers le code spécifique Firefox. J'ai fais un test, mais j'ai l'erreur suivante :

[Exception... "'Permission refusée d'obtenir la propriété UnnamedClass.classes' when calling method: [nsIDOMEventListener::handleEvent]"  nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)"  location: "<unknown>"  data: no]
Line 0

quand j'exécute la ligne suivante :

var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
          .getService(Components.interfaces.nsIWindowMediator);

Merci d'avance pour votre aide...

# Re: Jouer avec les tabulations en dehors d'une extension

Envoyé par : Paul Rouget

Date : 25/10/2007 11:54

et oui, tu accèdes ici à un composant XPCom, ce qui n'est pas autorisé dans une page distante.

# Re: Jouer avec les tabulations en dehors d'une extension

Envoyé par : marinew

Date : 25/10/2007 13:41

Merci pour cette réponse.

Donc si je comprends bien, je ne pas faire ça dans une simple page Web.

Y'a-t-il une autre possibilité, dans ce cas, par du code JavaScript, de récupérer une instance d'une fenêtre dont on connait le nom (propriété window.name), soit pour lui donner le focus, soit pour y exécuter une fonction JavaScript ?

# Re: Jouer avec les tabulations en dehors d'une extension

Envoyé par : marinew

Date : 25/10/2007 23:59

Pour ceux que ça intéresse, il est possible de demander à l'utilisateur les privilèges requis pour exécuter le code cité plus haut avec la commande : netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

Pour sélectionner un onglet, on peut du coup faire ceci, depuis une simple page HTML :

function parcourirTab () {
// On demande à l'utilisateur d'autoriser à exécuter des actions demandant un privilège particulier
// en principe interdit pour des raisons de sécurité.
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var maFenetre;

var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
         .getService(Components.interfaces.nsIWindowMediator);
for (var found = false, index = 0, browserInstance = wm.getEnumerator('navigator:browser').getNext().getBrowser();
     index < browserInstance.mTabContainer.childNodes.length && !found;
     index++) {

  // Récupèrer l'onglet suivant
  var currentTab = browserInstance.mTabContainer.childNodes[index];
  var fenCurrentTab = currentTab.linkedBrowser.contentDocument.defaultView;

  // Est-ce que cet onglet contient notre attribut personnalisé ?
  // if (currentTab.hasAttribute('nomAttribut')) {
  if (fenCurrentTab.name == 'nomFenetre') {

    // Oui--Le sélectionner et lui donner le focus.
    browserInstance.selectedTab = currentTab;

    // Donner le focus à *ce* navigateur au cas où un autre l'aurait
    browserInstance.focus();
 
    maFenetre = currentTab.linkedBrowser.contentDocument.defaultView;

    found = true;
  }
}

// Actions possibles sur maFenetre

}

Marine - ARMOR Technologies

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.