Myriad Blog 1.3.0 Tuesday, Jun 19th, 2018 at 12:56am 

Friday, Sep 21st, 2012 at 05:15pm
Navigateurs, ponts et passerelles

 
En travaillant sur la version Windows de notre plug-in (format Netscape NPAPI), nous nous heurtons à des dysfonctionnements fréquents des navigateurs, des implémentations partielles du format, ou des réactions inattendues. On a parfois l'impression de marcher sur un plancher pourri, ne sachant pas quelle latte va céder et nous expédier à l'étage du dessous sans prévenir.
 
Par exemple, le plug-in contient une option "vue en plein écran". Lorsque le bouton est cliqué, le plug-in crée une page HTML dans le dossier temporaire de la machine, et demande l'ouverture d'une autre fenêtre (ou d'un autre onglet) pour le visualiser.
 
Nous avons développé trois méthodes différentes pour demander au navigateur d'ouvrir cette fenêtre :
 
- La méthode "NPN_Get" qui est l'appel standard du système NPAPI "NPN_GetURL" et qui fonctionne bien lorsqu'on demande de visualiser une page HTML présente sur un serveur Web (http://). Malheureusement, sur beaucoup de navigateurs, cette méthode ne fonctionne plus lorsqu'il s'agit de montrer une page locale (file://).
 
- La méthode "JS Open" qui consiste à utiliser les objets Javascript depuis le plug-in. On a ainsi accès à la fonction Javascript window.open(). Cet accès Javascript n'est pas disponible dans l'implémentation de NPAPI sous Internet Explorer.
 
- La méthode "OpenDoc" qui consiste à rechercher quelle est, sur le PC, l'application qui gère l'affichage  des fichiers de type HTML et de l'appeler en lui donnant en paramètre la page locale à visualiser (appel par WinExec ou ShellExecute)
 
Nous utilisions plutôt la dernière méthode, qui fonctionnait sur tous les navigateurs. Malheureusement, dans sa dernière version, Firefox bloque pendant 30 secondes avant de montrer la page, et Opera ne montre plus rien.
 
Nous avons donc dû réaliser un tableau récapitulant les réactions des divers navigateurs lorsqu'on utilise chacune des trois méthodes:
 

 
- Les cases en vert indiquent que cela fonctionne, et que le code d'erreur retourné nous dit que tout s'est bien passé
 
- Les cases en orange indiquent que cela n'a pas fonctionné, mais que le code d'erreur retourné nous dit qu'une erreur s'est produite, nous permettant d'essayer éventuellement une autre méthode
 
- Les cases en rouge indiquent que cela n'a pas fonctionné correctement, mais que le code d'erreur retourné nous dit que tout s'est bien passé !
 
On s'aperçoit qu'Opéra ne fonctionne dans aucun des trois cas. Il n'y aura donc aucune possibilité de faire fonctionner le mode plein écran sur ce navigateur.
 
On s'aperçoit également qu'il n'est pas possible d'essayer les méthodes une à une jusqu'à ce que le code d'erreur retourné nous dise que la page est apparue, car il y a trop de cases rouges, ne nous permettant plus de savoir si la partition est effectivement apparue, ou seulement une page blanche.
 
Nous n'avons donc pas d'autre choix que de tester le navigateur, par une demande de "javascript:navigator.userAgent". Si ce paramètre n'est pas disponible, nous sommes sous Internet Explorer (qui ne contient pas d'implémentation des objets javascript en NPAPI), si le paramètre contient "Firefox", nous sommes sous Firefox, et sinon nous sommes sous l'un des autres navigateurs.
 
On utilisera donc la méthode NPN_Get sous Internet Explorer, la méthode JS Open sous Firefox, et la méthode OpenDoc sous les autres.
 
Des problèmes risquent de se poser avec des navigateurs utilisant le moteur de Firefox, mais ne se signalant pas comme tels dans "navigator.userAgent". Mais là, on est déjà dans le contournement du contournement, et à force de contourner, on va finir par tourner en rond.
by Olivier Guillion
Comments

Comment from Antoine Bautista Sunday, Sep 23rd, 2012 at 09:54am
le Plein Ecran
Pour info :
Mes partitions sur MUSL vous remercient ,ainsi que les autres à venir.
 
 
Et pour faire travailler les zygomatiques :
Quote:
on va finir par tourner en rond.

Une solution est de tout mettre à plat ainsi le rond devient ellipse.
 
A+


Most recent first
Oldest first

Top of page
Legal information Last update:  (c) Myriad