Heinz Geiger: Kennt jemand nen guten Browsercheck

Beitrag lesen

Hi,

if (document.getElementById("one").innerHTML)

das ergibt einen Fehler, wenn der Browser die Methode document.getElementById nicht kennt. Gemeint ist:

if (document.getElementById)

Beachte: die Methode ohne Klammern, weil sonst wieder die Ausführung derselben versucht würde.

Kann man so jeden Befehl überprüfen?

Ja.

Cheatah

hi,

-noch mein kommentar zu browsercheck

-das sicherste ist es schon vor jeder verwendung von methoden und eigenschaften diese zu überprüfen.
-leider ist dies nicht unbedingt der perfomance bekömmlich und teilweise auch wie folgend fehlerbehaftet:

if (self.navigator != null && self.navigator.javaEnabled != null)
        alert("javaEnabled existiert");
    else
        alert("javaEnabled existiert nicht");

-Der ie 5 und 6 macht hier z.bsp. eine fehlermeldung.

-Und noch was wenn du also folgendes testen willst:

document.getElementById("name_element").irgend_eine_methode;

muss du das wie folgt implementieren:

if (document.getElemantById != null && document.getElemantById("name_element") != null && document.getElemantById("name_element").irgen_eine_methode != null)
        alert("ok");
    else
        alert("nicht ok");

du musst die also durch das dom durchhangeln sonst kriegst du fehlermeldungen.

-du kannst auch den userAgent auswerten. du musst einfach alle möglichkeiten durchchecken. z.bsp. opera kann sich ja verschieden identifizieren.

-folgende funktion:

function Lenas_Cross_Browser_test_name_browser()
{
 for (var i = 0; i < arguments[0].length; i++)
 {
  // nc_4
  if (arguments[0][i] == "nc_4" && navigator.userAgent.indexOf("Mozilla/4") != -1 && navigator.userAgent.indexOf("MSIE") == -1 && navigator.userAgent.indexOf("Opera") == -1)
   return true;

// nc_6
  if (arguments[0][i] == "nc_6" && navigator.userAgent.indexOf("Mozilla/5") != -1 && navigator.userAgent.indexOf("rv:0") != -1 && navigator.userAgent.indexOf("Gecko") != -1 && navigator.userAgent.indexOf("Netscape6") != -1)
   return true;

// nc_7
  if (arguments[0][i] == "nc_7" && navigator.userAgent.indexOf("Mozilla/5") != -1 && navigator.userAgent.indexOf("rv:1") != -1 && navigator.userAgent.indexOf("Gecko") != -1 && navigator.userAgent.indexOf("Netscape/7") != -1)
   return true;

// mo_0
  if (arguments[0][i] == "mo_0" && navigator.userAgent.indexOf("Mozilla/5") != -1 && navigator.userAgent.indexOf("rv:0") != -1 && navigator.userAgent.indexOf("Gecko") != -1 && navigator.userAgent.indexOf("Netscape") == -1)
   return true;

// mo_1
  if (arguments[0][i] == "mo_1" && navigator.userAgent.indexOf("Mozilla/5") != -1 && navigator.userAgent.indexOf("rv:1") != -1 && navigator.userAgent.indexOf("Gecko") != -1 && navigator.userAgent.indexOf("Netscape") == -1)
   return true;

// ie_4
  if (arguments[0][i] == "ie_4" && navigator.userAgent.indexOf("Mozilla/4") != -1 && navigator.userAgent.indexOf("MSIE 4") != -1 && navigator.userAgent.indexOf("Opera") == -1)
   return true;

// ie_5
  if (arguments[0][i] == "ie_5" && navigator.userAgent.indexOf("Mozilla/4") != -1 && navigator.userAgent.indexOf("MSIE 5") != -1 && navigator.userAgent.indexOf("Opera") == -1)
   return true;

// ie_6
  if (arguments[0][i] == "ie_6" && navigator.userAgent.indexOf("Mozilla/4") != -1 && navigator.userAgent.indexOf("MSIE 6") != -1 && navigator.userAgent.indexOf("Opera") == -1)
   return true;

// op_5
  if (arguments[0][i] == "op_5" && (navigator.userAgent.indexOf("Opera/5") != -1 || navigator.userAgent.indexOf("Opera 5") != -1))
   return true;

// op_6
  if (arguments[0][i] == "op_6" && (navigator.userAgent.indexOf("Opera/6") != -1 || navigator.userAgent.indexOf("Opera 6") != -1))
   return true;
 }

return false;
}

-sie wird wie folgt aufgerufen:

Lenas_Cross_Browser_test_name_browser(["nc_4", "nc_6", "nc_7"])

die funktion gibt bei den browsern netcape 4, 6 und 7 true zurück, ansonsten false.

-folgende browser habe ich implementiert:

nc_4, nc_6, nc_7  netscape
 mo_0, mo_1        mozilla
 ie_4, ie_5, ie_6  internet explorer
 op_5, op_6        opera

gruss, heinz