Affichage des articles dont le libellé est firefox. Afficher tous les articles
Affichage des articles dont le libellé est firefox. Afficher tous les articles
1/12/2009

Débugger avec Firebug sous Firefox en testant en parallèle avec IE, Opera et Chrome

Si vous développez et débuggez votre application sous Firefox et utilisez les méthodes de l’objet console de Firebug, tel que :

console.debug(maVariable);
console.info('Hello World :', monApplication.version);
console.log('Logged in');

Il vous est alors impossible de tester votre code en parallèle sous Internet Explorer, Opera et Chrome[1] sans voir apparaitre un de ces messages :

/* IE */
Erreur : 'console' est indéfini

/* Opera */
Error:
name: ReferenceError
message: Statement on line 437: Undefined variable: console

/* Chrome (v1.x.xxx.x) */
Uncaught TypeError: Object #<a console="console"> has no method 'debug'

 

Commençons donc par un petit rappel sur les moyens de débug offert par ces différents navigateurs :

 

Internet Explorer

Il n’existe pas de console en natif qui propose les mêmes fonctionnalités que celles offertes par Firebug. Cependant des plugins tel que DebugBar devraient permettre cela.

 

Opera

Opera possède sa propre méthode postError() mais son utilisation est limitée car elle n’affiche pas le contenu des objets

opera.postError([1,2,3,4,5]);//Affiche: 1,2,3,4,5
opera.postError('Mon tableau',[1,2,3,4,5]);//Affiche: Mon tableau,1,2,3,4,5
opera.postError({maPropriete: 'Hello', maMethode : function(){return 'World';}});//Affiche: [object Object]

Google Chrome

Dans ses dernières versions (testé sous 2.0.156.1) Chrome supporte partiellement, via sa Console Javascript (Ctrl+Maj+J) les méthodes suivantes :

console.debug();
console.info();
console.log();

Partiellement car il est actuellement impossible de passer plusieurs objets/tableaux via un seul appel

monTableau = [1,2,3,4,5,6];
monObjet = {maPropriete : 'Hello', maMethode : function(){return 'World';}};
console.debug(monTableau,monObjet);//Affiche: [1, 2, 3, 4, 5, 6] Object
console.debug(monObjet);//Affiche le contenu de l'objet monObjet

La solution

Voici un bout de code (snippet) à placer avant tout appel aux méthodes console.debug, console.info et console.log.

//On créé l’objet console s’il n’existe pas (sous d’autre navigateur que Firebox & Chrome)
if(typeof console !== 'object')
     console = {};
if((typeof console.debug) !== 'function')//On pourrait aussi vérifier pour console.info et console.log
{
     if(typeof opera === 'object')//On redirige les appels vers opera.postError();
         console = {debug : function(){return opera.postError(arguments);}, info : function(){this.debug('[INFO] ',arguments);}, log :
function(){this.debug('[LOG] ',arguments);}};
     else//Ne rien afficher sur les autres navigateurs
         console = {debug : function(){return true;},info : function(){return true;}, log : function(){return true;}};
}

Il vous est maintenant possible de tester (voir même de debugger si vous êtes sous Chrome et/ou Opera) votre application sans vous soucier de supprimer les lignes de debug pour Firebug. Je vous conseille toutefois de placer ce bout de code dans l’événement DomReady afin d’éviter tout problème de chargement.

DomReady avec jQuery :

$(document).ready(function(){ /* bout de code à copier ici */ });

DomReady avec MooTools:

window.addEvent('domready', function() { /* bout de code à copier ici */ });

[1] Versions 1.x.xxx.x de Chrome

10/15/2008

Récupérer une photo Flickr protégée

Logo flickrAvertissement : La méthode que je présente ici n’est à utiliser que si les photos vous appartiennent et que vous avez perdu vos identifiants Flickr.

 

Vous l’avez peut-être remarqué, il est “impossible” de récupérer certaines photos sous Flickr en effectuant un clic droit puis Enregistrer l’image sous…. Vous obtiendrez alors une image transparente.

Pourquoi ? L’idée pour “protéger” une photo est de lui superposer une autre image de même taille et transparente (ou un filigrane). Ainsi la majorité des utilisateurs ne pourrons pas enregistrer l’image. Cette technique est aussi utilisée par les sites de vente de fonds d’écrans pour téléphone portable et bien d’autre à vous de voir lequel.

Donc, il suffit simplement d’enlever l’image de “protection” pour pouvoir atteindre le saint graal. Pour cela, j’aurai pu créer un bookmarklet pour Flickr, mais quid des autres sites ? Donc je vais simplement donner une des manipulations possibles et qui me semble la plus rapide.

 

Allez par exemple sur cette page Flickr qui contient une photo protégée, puis :

  • Ouvrez Firebug
  • Inspecter
  • Clic sur la photo que vous souhaitez “déprotéger”
  • Clic droit sur la partie de code html qui à été surlignée dans Firebug
  • Supprimer l’élément
  • Fermez firebug
  • Maintenant vous pouvez enregistrer l’image, ou simplement l’afficher séparément.
7/29/2008

Le CrossDomain, un besoin de support natif pour nos futurs applications web

Pour ceux qui ne le savent pas, le CrossDomain est l'appellation que l'on donne à un script (qui peut être Javascript ou autre) lorsque celui-ci effectue des requêtes HTTP vers d'autres domaines différents de celui qui l'héberge.

 

Actuellement les navigateurs modernes n'autorisent pas les scripts Javascript à effectuer des requêtes sur d'autres domaines principalement pour des raisons de sécurité. Cependant, l'équipe en charge du développement du navigateur Mozilla Firefox à annoncée récemment que la prochaine version permettrait le CrossDomain ce qui est déjà le cas (dans une moindre mesure) d'Internet Explorer 8 Beta.

 

Comment les développeurs de navigateur vont-ils faire pour garder un niveau de sécurité suffisant ?

A mon humble avis, à chaque fois qu'un script voudra effectuer une requête sur un autre domaine que celui du script, l'utilisateur se verra informer de la validation ou non de la requête. Il est d'ailleurs à prévoir qu'il sera permis à l'utilisateur de mettre en place des listes "blanche" et des listes "noires" afin d'autoriser (ou non) les scripts d'un domaine à effectuer des requêtes sur un autre.

Mais cela entraînera indéniablement d'énormes failles de sécurités. En effet, dès qu'un utilisateur aura mis un domaine sur liste blanche. Prenons l'exemple du domaine free.fr. Si l'utilisateur ajoute ce domaine dans sa liste blanche au lieu de mettre le domaine xxxxxxxx.free.fr alors théoriquement tous les sites personnels hébergés chez free pourront effectuer du CrossDomain, c'est à dire le meilleur comme le pire.

Un autre exemple, il sera possible pour un site malveillant d'accéder directement à votre compte Google ou à votre boite email Gmail (pour récupérer votre liste de contact) ceci dans l'hypothèse ou vous seriez déjà connecté à ces services. Nous étudierons la faisabilité de ce cas précis dès la sortie de la version final de Firefox ainsi que d'Internet Explorer 8.

 

Les techniques actuelles pour effectuer du CrossDomain

Les développeurs web on accès à généralement 3 techniques pour effectuer du CrossDomain dans leurs applications et scripts :

  • Le proxy : Votre script client (javascript) appelle un script serveur (Php, Asp, Ruby) qui va lui même effectuer la requête sur le serveur distant et qui pourra retourner le résultat de cette requête à votre script client. Cette technique est notamment utilisée par Netvibes pour récupérer les flux rss des domaines distants. L'avantage de cette technique est de pouvoir mettre en place un système de cache du côté serveur ce qui permet dans la plupart des cas une amélioration notable des performances de l'application.
  • Le script (JSON) : A chaque données que l'on souhaite échanger avec le serveur on ajoute une balise "<script>" dont le script source se trouve sur un domaine distant et avec diverses paramètres. Le script serveur distant pourra alors retourner sous différents formats les informations demandées (soit en Json si il s'agit de donné ou simplement un fonction Javascript)  au script client. Il est même possible d'exécuter une fonction de callback dès que les données sont chargées.
  • L'image : Contrairement aux deux techniques précédentes, l'information est unilatéral c'est à dire qu'elle va du script client vers le domaine extérieur. En script serveur est mis en place sur le domaine distant et est capable de traiter les informations passées en paramètre (par exemple : http://domaine-distant.ndd/monimage.php?valeur1=bonjour) à la fin de son exécution il retournera une image transparente ou de petite taille. Ainsi le script client, en modifiant l'adresse de cette image pourra envoyer des informations au serveur distant. Cette technique est utilisée par la majorité des systèmes de statistique (Xiti, Google Analytics, ...).
  • La modification des préférences du navigateur : sous Firefox il est possible d'autoriser définitivement les requêtes HTTP (Ajax) entre plusieurs domaines via la commande javascript : user_pref("capability.policy.default.XMLHttpRequest.open","allAccess"); cependant il faudra que l'utilisateur final configure de la même manière son propre navigateur. Cette technique est donc conseillée seulement dans le cas d'un intranet d'entreprise sans connexion avec l'extérieur (internet).

 

Mot de fin

Le support ou non du CrossDomain en natif pour les navigateurs inclus des problèmes de sécurité inhérent au développement d'application web (XSS par exemple). Il faudra donc suivre de très près l'évolution des discussions sur ce sujet.

6/04/2008

Comment modifier l'extension Firefox Delicious Bookmark pour ne pas partager ses favoris

firefox Ce billet s'adresse aux personnes naviguant sous Firefox, utilisant l'extension Delicious Bookmarks (dans l'exemple, la version 2.0.48) et ne souhaitant pas partager leurs favoris.

Même si à l'origine del.icio.us est orienté vers le partage de favoris, le service peut tout à fait être utilisé comme centre de sauvegarde de favoris/marque-pages entre plusieurs navigateurs internet et il se peut que vous ne souhaitiez pas partager vos favoris pour diverses raisons (sécurité, confidentialité...).

Pour ce genre d'utilisation, il fallait à chaque fois, lors de l'ajout d'un marque-page cliquer sur do not share. Maintenant nous allons modifier le script pour ne plus à avoir à cliquer sur do not share.

  1. Rendez vous dans le répertoire de votre profil Firefox qui contient les extensions. L'adresse sous Windows XP (voir pour les autres systèmes) est sous la forme : G:\Documents and Settings\[VOTRE_COMPTE_UTILISATEUR]\Application Data\Mozilla\Firefox\Profiles\[VOTRE_PROFIL].default\extensions\
  2. Ensuite rendez vous dans le dossier {2fa4ed95-0317-4c6a-a74c-5f3e3912c1f9} ou effectuez une recherche sur le fichier ssrDelicious.js.
  3. Commentez les lignes suivantes (la ligne 1002 et 1004) pour que tout les prochains marque-pages soient ajoutés en mode non partagé

    //if (shared == "false") {
    queryString += "&shared=no";
    // }

  4. Enregistrez le fichier puis relancez Firefox.
  5. Maintenant lorsque vous ajoutez un marque-page, que vous cliquiez sur do not share ou non, votre marque-page ne sera pas partagé.
5/25/2008

Mon feedback sur Firefox 3

Un rapide Feedback sur Firefox 3 RC1 :
  • Il arrive un moment dans la navigation où il m' est impossible d' accéder à une page web lorsque celle-ci est directement entrée via la barre d' adresse le seul moyen pour y accéder est par un lien hypertexte, je suis donc obliger de redémarrer le navigateur pour pouvoir utiliser à nouveau la barre d' adresse, ce bug existait déjà sous Firefox 2.
  • La recherche rapide depuis la barre d'adresse est extrêmement intéressante cependant il faudrait prévoir un bouton qui permettrait de supprimer une entrée à la volée. Si j' entre monsite, on me propose http://monsite.com et je voudrais http://www.monsite.com mais, cette proposition arrive toujours en deuxième. Il serait donc intéressant d' ajouter un bouton pour supprimer l' entrée "http://monsite.com".
  • De la même façon, la gestionnaire de mot de passe devrait autoriser un mot de passe à être utilisé sur : tout le domaine; un seul sous-domaine spécifique etc... Par exemple, un mot de passe enregistré sur http://www.monsite.com ne s' affichera pas sur http://monsite.com, or il s' agit du même site ! Un effort est donc à faire sur ce point qui est pour moi essentiel.
5/20/2008

Passage à Firefox 3 rc1

Ce soir, je viens de passer à Firefox Release Candidate 1 (RC1). Mais comme toutes mises à jour de ce type j'ai préféré sauvegarder mes mots de passe, préférences et extensions etc...(on est jamais trop prudent).

Et une extension qui fait cela à merveille est FEBE (Firefox Environment Backup Extension) ! En effet FEBE vous permet de sauvegarder :
  • vos extensions
  • vos thèmes
  • vos marques-pages
  • vos cookies
  • vos informations de connexion (nom d'utilisateur et mot de passe)
  • vos exceptions de site
  • vos plugins de recherche
  • votre historique et vos saisies de formulaire
Cela permet de gagner beaucoup de temps ! Plus besoin d'aller trifouiller dans le dossier de Firefox à la recherche de tel ou tel fichier !

Vous pouvez télécharger FEBE depuis sa page sur Mozilla Addons.

Une fois Firefox 3 RC installée et toutes vos données intactes (ou pas, dans ce cas FEBE est utile), 99% de vos extensions ne fonctionneront pas, d'où l'utilité de l'extension Nightly Tester Tools (télécharger Nightly Tester Tools sur Mozilla Addons) ! En effet Nightly Tester Tools va permettre de modifier les données de compatibilité de chaque extensions et ainsi permettre leurs exécutions.

De plus, si comme moi vous utilisez l'extension del.icio.us, une version officielle pour firefox 3 est disponible !

Firefox 3 est censé améliorer la gestion de la mémoire vive, pour ma part je suis actuellement à 223 Mo de mémoire vive occupée par le navigateur...Pas de réel changement donc (dit-il très déçu)...
5/05/2008

Ouvrir dans firefox un lien rapidement dans un onglet

Comment ouvrir un lien dans Mozilla Firefox dans un nouvelle onglet sans passer par le menu ?

C'est simple, allez sur le lien et cliquez sur le bouton du milieu de votre souris, ce lien s'ouvrira directement dans un nouvelle onglet en arrière plan.

Sympa non ?

De la même façon, survolez un onglet, appuyez sur le bouton du milieu de votre souris, et il se fermera.

Ps : pour les utilisateurs Apple, il y a aussi [Pomme]+Clic (merci simonrobic) et pour Windows/Linux [Ctrl]+Clic (merci flexgraph).
»
 
 
Made with ❤ on a hot august night from an airplane the 19th of March 2017.