Faut regarder du côté des plugins genre Tab Mix Plus : regarde le code JavaScript de ce plugin, y a peut-être un moyen. Sinon, je viens de tomber là-dessus : http://developer.mozilla.org/en/docs/window.open#FAQ
Version imprimable
Faut regarder du côté des plugins genre Tab Mix Plus : regarde le code JavaScript de ce plugin, y a peut-être un moyen. Sinon, je viens de tomber là-dessus : http://developer.mozilla.org/en/docs/window.open#FAQ
J'ai cherché sur Internet, mais j'ai l'impression que le code source de Tab Mix Plus n'est pas accessible. Cela dit, vu que c'est une extension Firefox, je n'y connais pas grand chose, mais je ne suis pas sûre que ce soit écriten JavaScript. Et même si ça l'était, on n'a pas les même droits en étant dans une page Web que lorsqu'on est dans le code d'une extension : cf post ici.
Sinon, merci pour le lien, il y a plein de choses intéressantes, il va falloir que je creuse...
Bon... J'ai trouvé une solution à mon problème. Par contre, je pense que c'est du 100% Firefox. Code inspiré de ce lien :
2 inconvénients à la solution :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 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 }
- je pense que ça ne marchera pas sur autre chose que Firefox
- ca implique que l'utilisateur accepte d'accorder des privilèges spéciaux lors de l'exécution de ce script.
Avantages :
- je peux donner le focus à on onglet
- je peux donner le focus à on onglet, même si je n'en ai pas conservé la référence lors d'un window.open
- je peux même exécuter des fonctions JavaScript sur les fenêtres en question, même si elles ne sont pas dans le même domaine (cf contraintes de sécurité)
Marine
Salut. Je suis tombé sur ce sujet par hasard, alors que j'ai eu un cas similaire avec Firefox et j'ai trouvé une solution toute simple; On sait que window.open avec 2 paramètres ouvre la page dans un nouvel onglet. Pour obtenir une popup (donc une nouvelle fenêtre), il suffit d'ajouter le 3ème paramètre :Le focus dans le try permet de retomber sur la même fenêtre (ou onglet) si elle est déjà ouverte. Et même avec la case "basculer sur l'onglet" décochée dans les options, l'onglet ou la popup aura le focus à son ouverture. A noter qu'IE ouvre une popup dans les 2 cas (pas trop testé)... A+Code:onclick="var mafen=window.open('http://developpez.com/','nom','width=800,height=800,scrollbars=yes');try{ mafen.window.focus();}catch(e){};"