Pour le même navigateur obtenir des informations de version différentes avec une URL différente en Javascript


Salut, j'ai une exigence pour détecter la version du navigateur via JavaScript. De ici je suis capable d'obtenir ce que j'attendais. Cependant, la version retournée est différente lorsque j'accède à la page via localhost et via hostname.

Créer une page HTML simple (BrowserVersion.html) avec la source ci-dessous.

<html>
<script>

var BrowserDetect = {
    init: function () {
    this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
    this.version = this.searchVersion(navigator.userAgent)
    || this.searchVersion(navigator.appVersion)
    || "an unknown version";
    this.OS = this.searchString(this.dataOS) || "an unknown OS";
    },
    searchString: function (data) {
    for (var i=0;i<data.length;i++) {
    var dataString = data[i].string;
    var dataProp = data[i].prop;
    this.versionSearchString = data[i].versionSearch || data[i].identity;
    if (dataString) {
    if (dataString.indexOf(data[i].subString) != -1)
    return data[i].identity;
    }
    else if (dataProp)
    return data[i].identity;
    }
    },
    searchVersion: function (dataString) {
    var index = dataString.indexOf(this.versionSearchString);
    if (index == -1) return;
    return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
    },
    dataBrowser: [
    {
    string: navigator.userAgent,
    subString: "Chrome",
    identity: "Chrome"
    },
    { string: navigator.userAgent,
    subString: "OmniWeb",
    versionSearch: "OmniWeb/",
    identity: "OmniWeb"
    },
    {
    string: navigator.vendor,
    subString: "Apple",
    identity: "Safari",
    versionSearch: "Version"
    },
    {
    prop: window.opera,
    identity: "Opera"
    },
    {
    string: navigator.vendor,
    subString: "iCab",
    identity: "iCab"
    },
    {
    string: navigator.vendor,
    subString: "KDE",
    identity: "Konqueror"
    },
    {
    string: navigator.userAgent,
    subString: "Firefox",
    identity: "Firefox"
    },
    {
    string: navigator.vendor,
    subString: "Camino",
    identity: "Camino"
    },
    { // for newer Netscapes (6+)
    string: navigator.userAgent,
    subString: "Netscape",
    identity: "Netscape"
    },
    {
    string: navigator.userAgent,
    subString: "MSIE",
    identity: "Explorer",
    versionSearch: "MSIE"
    },
    {
    string: navigator.userAgent,
    subString: "Gecko",
    identity: "Mozilla",
    versionSearch: "rv"
    },
    { // for older Netscapes (4-)
    string: navigator.userAgent,
    subString: "Mozilla",
    identity: "Netscape",
    versionSearch: "Mozilla"
    }
    ],
    dataOS : [
    {
    string: navigator.platform,
    subString: "Win",
    identity: "Windows"
    },
    {
    string: navigator.platform,
    subString: "Mac",
    identity: "Mac"
    },
    {
    string: navigator.userAgent,
    subString: "iPhone",
    identity: "iPhone/iPod"
    },
    {
    string: navigator.platform,
    subString: "Linux",
    identity: "Linux"
    }
    ]
    };
    BrowserDetect.init();
    </script>
<script type="text/javascript">
    navigator.sayswho= (function(){
  var N= navigator.appName, ua= navigator.userAgent, tem;
  var M= ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
  if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
  M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
  return M;
 })();
 alert(navigator.sayswho);
 </script>

<html>

Maintenant, lorsque j'accède à la page ci-dessus avec l'URL ci-dessous, j'obtiens la valeur as, MSIE, 8.0

http://localhost:8080/docs/BrowserVersion.html, 

Mais lorsque j'accède à la même page avec l'URL ci-dessous, j'obtiens le valeur comme MSIE, 7.0.

http://mylocalhost:8080/docs/BrowserVersion.html

Pourquoi la version du navigateur change entre deux versions d'URL.

Remarque: Mon fichier hôte a les entrées ci-dessous

127.0.0.1   localhost
127.0.0.1   mylocalhost

Des pensées?

Author: Community, 2013-09-14

1 answers

Vous devrez désactiver la vue de compatibilité d'IE pour les domaines locaux.

Accédez au paramètre de vue de compatibilité d'IE et décochez la deuxième option "Afficher les sites intranet dans la vue de compatibilité".


Les TRÈS bases de la détection d'objets DOM pour les navigateurs/versions de navigateur...

var z = document.getElementsByTagName('body')[0];

if (z.style.MozBinding!=undefined)
{
 browser='Firefox';
}
else if (window.opera)
{
//Opera up to 12.5
}
else if (z.style.scrollbar3dLightColor!=undefined)
{
 browser='msie';
}
else if (z.style.khtmlMarginBottomCollapse!=undefined && z.style.WebkitBorderRadius==undefined) {browser='Safari'; browser_version='2.0';}
else if (z.style.WebkitBorderRadius!=undefined || z.style.khtmlMarginBottomCollapse!=undefined)
{
 if (z.style.item=='function item() { [native code] }')
 {
  browser='Chrome';
 }
 else
 {
  browser='Safari';
 }
}
else if (z.style.KhtmlBorderRadius!=undefined) {browser='Konqueror';
 1
Author: John, 2013-09-17 06:00:36