IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Fonction avec 3 switch ou if else selon le navigateur employé


Sujet :

JavaScript

  1. #1
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut Fonction avec 3 switch ou if else selon le navigateur employé
    bonsoir a tous
    je cheche a avoir 3 choix possible dans une fonction une sorte de switch selon le navigateur employé
    selon le navigateur changer de methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    function insertimg2(){
       var isChrome = !!window.chrome && !!window.chrome.webstore;
       var isFirefox = typeof InstallTrigger !== 'undefined';
       var isIE = /*@cc_on!@*/false || !!document.documentMode;
     
    alert("IE= " +isIE + "   Firefox= "+isFirefox+ "    Chrome= "+isChrome);
    //methode pour chrome
       var selection =window.getSelection().getRangeAt(0);
       selection.collapse(true);//au cas ou la selection contient du texte on met le start et end a zero avec collapse pour ne pas remplacer le texte
       window.getSelection().addRange(selection);             
       choixfichier.click();var add=choixfichier.value;   
       var baliseimg = document.createElement("img");
       baliseimg.src=add;
       baliseimg.width=300;
       selection.insertNode(baliseimg);
     
    //methode pour IE mise en commentaire 
       // il est important de determiner la selection (meme vide) sinon l'insertion se fait sur tout le document et remplace tout 
       //var selection = window.getSelection().getRangeAt(0);
      // selection.collapse(true);//au cas ou la selection contient du texte on met le start et end a zero avec collapse pour ne pas remplacer le texte
       // window.getSelection().addRange(selection); // garde la selection active             
       //l'avantage de execCommand c'est qu'il ouvre sa propre petite fenetre avec un bouton "parcourir" 
       //possibilité de regler dans cette fenetre l'alignement et le hspaces le src a  l'url du fichier local tel quel
       //document.execCommand("insertimage",null,null);
     
     
     
    }
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  2. #2
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Par défaut
    comprend pas la question
    tu cherche à déterminer quel type de navigateur est utilisé ? => if(navigator.userAgent.indexOf('MSIE')) ..... ou Modernizr

    tu cherche à connaître une approche algorithmique pour gérer ce type de probleme ?

    Est-ce les autres navigateurs sont à exclure ? (Vivaldi, Safari,... ils doit en exister des dizaines...)


    Est-ce que tu cherche à déterminer en fonction de l'interpréteur Javascript ou du moteur de rendu des pages HTML ?
    et suivant leurs version ?

    Est-ce tu a songé à html5Shiv ou à un simple css reset ?

    etc.. ???

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir psychadelic

    toutes fonctions qui sont et seront presentes dans le wysiwyg ne seront compatible que IE chrome firefox bien que pour le dernier je n'ai pas confirmation
    j'ai trois variable isie,ischrome,isfirefox


    dans la fonction selon si l'une ou l'autre est a true un code s'executera c'est tout donc coment faire ca
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Par défaut
    Je vois pas trop ce que veux dire «*wysiwyg*» dans ton contexte à toi, mais passons.

    A te lire, il semblerai possible que plus d’une de tes 3 variables soit à true, auquel cas il y aurai une priorité entre eux*??

    Sinon je ne vois pas trop la difficulté*:
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function bidule() {
    	if ( isIE ) {
    		// code spécifique pour le cas IE
     
     
    		return; // a la rigueur ça évite de faire des bétises de code
    	}
    	if ( isFirefox  ) {
    		// code spécifique pour le cas  isFirefox
     
    		return;
    	}
    	if ( isChrome  ) {
    		// code spécifique pour le cas isChrome
     
    		return; 
    	}
    }

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour psychadelc
    j'avais essayé cela et ca plante tout le wysiwyg ne se construit meme plus

    je vais laisser cette question en suspens je ferais les adaptations"chrome" apres il y a trop de différence peut etre ferais je 2 fichiers plutot que des adaption dans des if else qui n'en finissent plus
    merci pour le retour
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Par défaut
    Ok, relance quand tu voudra..

    mais je ne vois pas trop comment un if ( isIE ) { peut tout faire planter. ?

    Qu'est que donnait ton alert("IE= " +isIE + " Firefox= "+isFirefox+ " Chrome= "+isChrome);
    en ligne 6 sur ton premier post ?

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    dans ie il me donnait isIE=true et les autres false dans chrome c'etait isChrome= treu et le autres false
    non de ce coté la le message donnait bon

    c'est pour ca que j'ai posé la question le message ok le reste non

    et dans le debugeur IE il me dit que les variables sont indefinies alors que l'on voit bien par le message qu'elles donnent quelque chose
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Par défaut
    s'il y des valeurs indéfinies, cela peut effectivement poser problème.

    donc autant tester les valeurs avant :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    36
    37
    38
    39
    40
    41
    42
    function bidule() {
     
     
    	if (isIE      == undefined) isIE      = false;
    	if (isFirefox == undefined) isFirefox = false;
    	if (isChrome  == undefined) isChrome  = false;
     
     
    	// solution 1 de rejet en cas de non détection...
    	// ------------------------------------------------> rejet ou code spécifique à minima
     
    	if ( ! (isIE || isFirefox || isChrome ) ) {
    		alert (" aucun navigateur défini ! :( ");
     
     
    		// code spécifique à minima pour le cas de navigateur non défini
    		return;
    	}
     
    	// solution 2 en cas de non détection...
    	// ------------------------------------------------> placer un choix par défaut (ici isIE)
    	//	if ( ! (isIE || isFirefox || isChrome ) ) isIE = true;  // choix par défaut
     
     
     
    	if ( isIE ) {
    		// code spécifique pour le cas IE
     
     
    		return; // a la rigueur ça évite de faire des bétises de code
    	}
    	if ( isFirefox  ) {
    		// code spécifique pour le cas  isFirefox
     
    		return;
    	}
    	if ( isChrome  ) {
    		// code spécifique pour le cas isChrome
     
    		return; 
    	}
    }

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    non les 3 valeurs sont bien definies 1 a true les deux autres a false c'est ca justement qui est incompréhensible
    le reste du code fonctionne tout nikel selon le navigateur et des que je le met dans les conditions ca plante tout

    je testerais cette partie la demain je bute sur un probleme encore plus C...
    merci pour l'exemple
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 02h08
  2. souci fonction avec if et else
    Par chantalina dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/02/2010, 07h27
  3. Réponses: 3
    Dernier message: 05/09/2006, 01h47
  4. Appeler une fonction avec/sans parenthèses
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/12/2002, 19h48
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 14h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo