FAQ JavaScriptConsultez toutes les FAQ

Nombre d'auteurs : 43, nombre de questions : 176, dernière mise à jour : 19 décembre 2013 

 
OuvrirSommaireLa navigation et le navigateur

Un problème fréquent avec le JavaScript c'est que son comportement n'est pas le même sur tous les navigateurs. Certaines fonctions n'existent que sur certains navigateurs, certaines fonctions ont même des comportements différents.
Le script suivant permet la détection de la plupart des navigateurs actuels :

 
Sélectionnez
var agt=navigator.userAgent.toLowerCase();

var is_opera = (agt.indexOf("opera") != -1);
var is_mac = (agt.indexOf("mac")!=-1);
var is_konq = (agt.indexOf('konqueror') != -1);
var is_safari = ((agt.indexOf('safari')!=-1)
	&& (agt.indexOf('mac')!=-1))?true:false;
var is_khtml  = (is_safari || is_konq);
var is_gecko = ((!is_khtml) && (navigator.product) &&
	(navigator.product.toLowerCase()=="gecko"))?true:false;
var is_fb = ((agt.indexOf('mozilla/5')!=-1) && (agt.indexOf('spoofer')==-1) &&
	(agt.indexOf('compatible')==-1) && (agt.indexOf('opera')==-1)  &&
	(agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)     &&
	(is_gecko) && (navigator.vendor=="Firebird"));
var is_fx = ((agt.indexOf('mozilla/5')!=-1) && (agt.indexOf('spoofer')==-1) &&
	(agt.indexOf('compatible')==-1) && (agt.indexOf('opera')==-1)  &&
	(agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)     &&
	(is_gecko) && ((navigator.vendor=="Firefox")||(agt.indexOf('firefox')!=-1)));
var is_moz   = ((agt.indexOf('mozilla/5')!=-1) && (agt.indexOf('spoofer')==-1) &&
	(agt.indexOf('compatible')==-1) && (agt.indexOf('opera')==-1)  &&
	(agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)     &&
	(is_gecko) && (!is_fb) && (!is_fx) &&
	((navigator.vendor=="")||(navigator.vendor=="Mozilla")||(navigator.vendor=="Debian")));
var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
	&& (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
	&& (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1)
	&& (!is_khtml) && (!(is_moz)) && (!is_fb) && (!is_fx));
var is_ie   = ((agt.indexOf('msie') != -1) && (!is_opera) && (!is_khtml));
 

Il suffit ensuite de tester la valeur de is_*
Une technique aujourd'hui plus utilisée est celle dite d' Feature Detection qui se concentre sur une fonction plutôt que sur le navigateur.

Mis à jour le 16 décembre 2005  par simone.51, denisC

En JavaScript, il y a l'objet history qui permet de gérer l'historique du navigateur.
Pour aller à la page précédente :

  • history.back();
  • history.go(-1);

Pour aller la page suivante :

  • history.next();
Créé le 25 août 2003  par simone.51

Ce n'est pas possible…
On peut toujours essayer de le bloquer en ouvrant des fenêtres avec window.open. Le bouton précédent sera grisé, mais on pourra toujours revenir en arrière quoi qu'il en soit.

Créé le 2 juillet 2005  par simone.51

Il n'est pas possible de récupérer ces événements en JavaScript.

Créé le 19 avril 2006  par Jérôme

Pour accéder à une URL, pour faire une redirection par exemple, il suffit de faire :

 
Sélectionnez
window.location.replace('page.html');

Si l'on souhaite que la page actuelle n'apparaisse pas dans l'historique.

 
Sélectionnez
window.location.assign('page.html');

Si l'on souhaite que la page actuelle apparaisse dans l'historique.

Mis à jour le 10 février 2009  par simone.51, Bovino

Ce code ne fonctionne que sous Internet Explorer

La fonction qui permet la copie :

 
Sélectionnez
function copyclipboard(intext) {
   window.clipboardData.setData('Text', intext);
}

Le lien qui permet la copie :

 
Sélectionnez
<a href="javascript:copyclipboard('Texte à copier');">lien</a>
                
Créé le 4 septembre 2003  par simone.51, JBrek

Il faut pour cela utiliser les propriétés "screen" suivantes : - height pour la hauteur
- width pour la largeur
Entre les balises <head></head> :

 
Sélectionnez
hauteur = screen.height;
largeur= screen.width;
resol = largeur+ " x " + hauteur;
alert(resol);
Mis à jour le 3 janvier 2006  par BrYs, denisC
 
Sélectionnez
window.defaultStatus = 'texte que vous voulez';

Attention, ce code ne fonctionne pas avec IE !

Créé le 25 septembre 2003  par BrYs

On ne peut pas.
En revanche, il y a toujours une solution de rechange.
Mettre un calque contenant une image par dessus le bouton, mais bon...

Créé le 11 septembre 2003  par simone.51
 
Sélectionnez
<a href="lien1.html" onclick="window.open('lien2.html','ma_fenetre','copyhistory=0')"
target="_self">cliquez ici</a>
Créé le 6 novembre 2003  par simone.51

C'est tout simple : on ne peut pas !!!
Toutes les méthodes existant actuellement sont de vagues artifices qui n'ont aucun effet sur le fond du problème.

Mis à jour le 3 janvier 2006  par simone.51, denisC

Pour identifier la langue par défaut du navigateur, il y a deux propriétés selon que vous ayez NetScape (Mozilla,...) ou Internet Explorer
Pour IE :

 
Sélectionnez
navigator.userLanguage

Pour NS :

 
Sélectionnez
navigator.language
Créé le 21 janvier 2004  par simone.51

Ce code permet de récupérer des paramètres passés dans une url par le biais d'un lien ou par la méthode get

 
Sélectionnez
<script type="text/javascript">
    var nom=[];
    var valeur=[];
 
    // On enlève le ?
    param = window.location.search.slice(1,window.location.search.length);
 
    // On sépare le paramètres....
    // first[0] est de la forme param=valeur
 
    first = param.split("&");
 
    for(i=0;i<first.length;i++){
        second = first[i].split("=");
        nom[i] = second[0];
        valeur[i] = second[1];
    }
</script>

Le tableau nom contient le nom des paramètres et le tableau valeur contient les valeurs de ces paramètres.

Créé le 23 septembre 2004  par simone.51

1. Créer un cookie

 
Sélectionnez
function SetCookie(name, value, days) {
     var expire = new Date ();
     expire.setTime (expire.getTime() + (24 * 60 * 60 * 1000) * days);
     document.cookie = name + "=" + escape(value) + "; expires=" +expire.toGMTString();
}

2. Récupérer la valeur d'un cookie

 
Sélectionnez
function GetCookie(name) {
     var startIndex = document.cookie.indexOf(name);
     if (startIndex != -1) {
          var endIndex = document.cookie.indexOf(";", startIndex);
          if (endIndex == -1) endIndex = document.cookie.length;
          return unescape(document.cookie.substring(startIndex+name.length+1, endIndex));
     }
     else {
          return null;
     }
}

3. Supprimer un cookie

 
Sélectionnez
function DeleteCookie(name) {
     var expire = new Date ();
     expire.setTime (expire.getTime() - (24 * 60 * 60 * 1000));
     document.cookie = name + "=; expires=" + expire.toGMTString();
}
Créé le 23 septembre 2004  par Patrick Beaudoin

Lien : Voir le tutoriel sur les cookies

 
Sélectionnez
document.lastModified
Créé le 2 juillet 2005  par simone.51

C'est très simple, on ne peut pas.

C'est l'utilisateur qui a le choix de ce qu'il veut imprimer, en particulier au niveau des pieds de pages / en-têtes de pages, nombre de copies, orientation des pages, impression des images et couleurs de fonds, ...

Firefox est très clair sur ce point et aucune action n'est possible par JavaScript (en dehors du style de la page, bien entendu). Sur IE, il reste la possibilité d'utiliser certains ActiveX pour paramétrer l'impression, mais cette solution est à éviter autant que possible.

Créé le 3 janvier 2006  par denisC

Dans une pop-up, sous Firefox, même avec status=no, la barre de statut apparait, pourquoi ?

Simplement, parce que d'après la doc développeur de Mozilla :

 
Sélectionnez
status :
                    Si cette option est mise à yes, alors la nouvelle fenêtre aura une barre de statut.
                    L'utilisateur peut forcer l'affichage de la barre de statut.
                    La configuration par défaut est de forcer la présence de la barre de statut.
                

Par défaut, l'utilisateur force la présence de la barre de statut. Ce comportement peut être modifié dans le menu Options>Contenu>Javascript Avancé mais seul l'utilisateur peut le décider.

Créé le 3 janvier 2006  par denisC

Lien : documentation développeur Mozilla

Il n'y a malheureusement pas grand chose à faire dans ce cas. La meilleure façon de faire est d'utiliser les balises HTML :

 
Sélectionnez
<noscript>
Attention, le JavaScript est désactivé et vous ne pourrez bénéficier
de toutes les fonctionnalités de cette page.
</noscript>
Créé le 19 avril 2006  par BrYs

La façon normale de faire est d'utiliser une balise <meta />, mais cela peut être difficile à cause des différents navigateurs et du besoin de configuration du serveur.

Voici une petite astuce, indépendante du navigateur, basée sur le fait que si l'on envoie un paramètre dans l'adresse, le navigateur repasse par le serveur.

Il suffit donc de générer un paramètre aléatoire que l'on accole à l'adresse en question.

Par exemple, pour forcer la mise à jour d'une image :

 
Sélectionnez
MonImage.src='fichierImage.jpg?'+new Date()*Math.random();
Créé le 19 avril 2006  par SpaceFrog

En JavaScript c'est impossible. Il est (a été) possible d'accéder aux fichiers sur le disque dur d'un utilisateur avec IE en utilisant des activeX, mais "normalement" ce n'est plus possible car ça représentait une faille de sécurité.

Créé le 9 mars 2009  par Celelibi
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2004 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.