Dans le Javascript pour une extension de Firefox, vous pouvez appeler gBrowser.getBrowserForTab
mais il n'y a pas de gBrowser.getTabForBrowser
. J'ai donc écrit le mien et ça fonctionne, et je suis juste curieux de savoir s'il y a une raison pour laquelle je ne devrais pas le faire, ou s'il y a quelque chose qui ne va pas avec le code. Ce qui suit est dans ma méthode init
qui est appelée lorsque la fenêtre se charge.Firefox gBrowser.getBrowserForTab mais pas gBrowser.getTabForBrowser?
gBrowser.getTabForBrowser = function(browser) {
for (var i=0; i<gBrowser.browsers.length; i++) {
if (gBrowser.getBrowserAtIndex(i) === browser) {
return gBrowser.tabContainer.getItemAtIndex(i);
}
}
return null;
}
(ou devrait-il être gBrowser.prototype.getTabForBrowser = ...
?)
Devrait-il être '==' ou '==='? Je pense qu'il est concevable que deux '' se comparent en tant qu'égaux même s'ils ne sont pas exactement le même navigateur, bien que je ne sois pas sûr. Donc '===' semble plus sûr pour moi. –
MatrixFrog
Après quelques expériences rapides, on dirait qu'il * réorganise * les navigateurs dans le DOM, mais vous avez raison de ne pas me fier à cela. Bon point! – MatrixFrog
'a === b' est équivilent à' typeof a == typeof b && a == b', donc quand les types des deux opérandes sont déjà connus pour être identiques, '===' n'est pas nécessaire. Puisque les objets dans Javascript sont assignés à des variables par référence, deux objets distincts ne se compareront jamais même s'ils contiennent les mêmes noms et valeurs de propriété. '({x: 5}) == ({x: 5})' évalue à 'false'. Cela étant dit, '===' ne fait certainement pas de mal, et il a l'avantage que vous n'avez pas à y penser trop fort. – MooGoo