2012-10-21 4 views
0

Pls regarder le code suivant: html ...étrange javascript bug

<pre id='output'></pre> 

html ...

JS

function log(text) { 
    var div = document.getElementById('output'); 
    div.innerHTML += text + '\n'; 
} 

function foo() { 

    var browser=0; 
    if(navigator.appName.toUpperCase()=="MICROSOFT INTERNET EXPLORER") 
     browser=1; 
    else 
    if(navigator.appName.toUpperCase()=="NETSCAPE") 
     browser=2; 
    log ('browser:'+browser); 
    if (browser==1) 
    { 
     log ('IE'); 
    } 
    if (browser==2); 
    { 
     log ('Chrome'); 
    } 

    if (browser==0); 
    { 
      log ('Could not determine broweser type'); 
      return; 
    } 
    } 

Quand je lance ce billet depuis IE la sortie est: navigateur: 1 c'est-à-dire non supporté L'extension Chrome sera chargée Impossible de déterminer le type de broweser

Quand je le lance à partir de Chrome la sortie est: navigateur: 2 extension Chrome sera chargé Impossible de déterminer le type de broweser


Comment peut-il que le navigateur a plus d'une valeur? 10xs, Nir

+3

Pourquoi utilisez-vous le reniflage du navigateur? – ThiefMaster

+1

Dans un cas, vous l'exécutez à partir de Chrome, alors que dans l'autre cas, vous l'exécutez à partir de Chrome? – lanzz

+1

Quelle est la différence entre Chrome # 1 et Chrome # 2? Où est-ce que cela (* pas supporté *) * L'extension Chrome sera chargée * vient, ce n'est pas dans votre code? – Bergi

Répondre

5

Vous avez une erreur très débutants dans votre code

Le ; à la fin de la si if (browser==0); cause votre si la condition à la fin et le reste est un bloc de code normal qui est exécuté chaque temps, peu importe la valeur de browser

+0

@lanzz: Opps, mon mauvais. Merci –

+0

la même chose après 'si (navigateur == 2);' – Bergi

+0

oups - 10xs! .... – user1709555

0

Vous ne devriez pas mettre ; après une déclaration if: if (browser==2);

0

Clyde Lobo montre la bonne réponse. Lorsque vous rencontrez des problèmes JS, il est préférable de le déboguer avec Developer Tool (F12) depuis votre navigateur. en définissant un point de rupture, il pourrait être facile de trouver ce bug de code.