Browserweiche in JavaScript
koerschgen2001
- javascript
In CSS kann man ja eine Browserweiche für eine alternative CSS-Datei definieren.
z.B.
<!--[if IE]>
<style type="text/css">@import url(ie.css);</style>
<![endif]-->
wie kann man das in JavaScript machen, dass ich für einen bestimmten Browser eine andere .js-Datei
einbinde.
Hallo koerschgen2001!
In CSS kann man ja eine Browserweiche für eine alternative CSS-Datei definieren.
Das ist nur etwas was du _mit_ CSS-Dateien machst, nicht CSS an sich. Diese Art der Abfrage nach den IE-Versionen nennt man Conditional Comment.
z.B.
<!--[if IE]>
<style type="text/css">@import url(ie.css);</style>
<![endif]-->
»»
wie kann man das in JavaScript machen, dass ich für einen bestimmten Browser eine andere .js-Datei
Indem Du nach bestimmten eindeutgen merkmalen von Browsern suchst, aber Du benötigst dafür keine einzelnen js Dateien. Es würde völlig reichen wenn Du innerhalb Deiner js Dateien die Uuterscheidung nach Browser vornimmst. Am besten aber ist es, Funktionen so zu gestalten, dass sie allgemein gültig sind.
Am allerbesten wäre es aber gewesen, hättest Du die Suche herangezogen, die liefert nämlich für Deinen Betreff wahrlich viele Ergebnisse.
Schönen Gruß
Hi,
wie kann man das in JavaScript machen, dass ich für einen bestimmten Browser eine andere .js-Datei
einbinde.
Bei Javascript ist im allgemeinen nicht wichtig, welcher Browser es ist, sondern was er kann. Bewaehrt hat sich eine Abfrage bekannter Objekte, um Javascriptfehler zu verhindern. Eine Abfrage wie
if (document.documentElement){...}
stellt z.B. sicher, dass nur Dom-faehige Browser diesen Zweig ausfuehren.
Lediglich fuer bestimmte Aussenseiter wie Safari, IE-Mac oder Opera brauche ich manchmal eine gesonderte Abfrage.
Gruesse, Joachim
Hallo,
Bei Javascript ist im allgemeinen nicht wichtig, welcher Browser es ist, sondern was er kann. Bewaehrt hat sich eine Abfrage bekannter Objekte, um Javascriptfehler zu verhindern. Eine Abfrage wie
if (document.documentElement){...}
stellt z.B. sicher, dass nur Dom-faehige Browser diesen Zweig ausfuehren.
»DOM-Fähigkeit« misst sich nicht daran, ob der Browser *ein* DOM-Objekt kennt, welches man vielleicht nicht einmal benötigt. Man sollte auch nicht glauben, dass man durch eine solche Abfrage »JavaScript-Fehler verhindern« könne. Nach wie vor ist es sinnvoll, die *tatsächlich verwendeten* DOM-Objekte abzufragen. JavaScript-Fehler verhindert man durch die Existenzabfragen, durch Abfrage von Rückgabewerten und als ultima ratio durch die Nutzung des Exception-Systems des DOM.
Mathias
Hi,
Nach wie vor ist es sinnvoll, die *tatsächlich verwendeten* DOM-Objekte abzufragen.
Jein. Wenn es um Standardmethoden wie getElementById geht reicht eine generelle Abfrage voellig aus. Oder willst Du beim Erzeugen eines Html-Elementes nacheinander abfragen:
if (document.createElement)...
if (el.appendChild) ...
Das halte ich fuer reichlich uebertrieben. Ausserdem hilft Dir das z.B. bei setAttribute und ie nicht weiter.
JavaScript-Fehler verhindert man durch die Existenzabfragen, durch Abfrage von Rückgabewerten und als ultima ratio durch die Nutzung des Exception-Systems des DOM.
Wow, Zitat aus dem Lehrbuch?
;-)
Gruesse, Joachim
Hallo koerschgen2001,
das kann man, aber nur sehr unzuverlässig, mit http://de.selfhtml.org/javascript/objekte/navigator.htm. Die Informationen, die die Browser übermitteln, können teilweise recht frei angepasst werden. Normalerweise prüft man Objekte und Methoden (exemplarisch) vor ihrem Einsatz auf ihre Existenz. Mein DOM-Test sieht z.B. so aus:
var kannDOM=document.getElementsByTagName && document.getElementsByTagName('body')[0].appendChild;
...
if (kannDOM) ...
Gruß, Jürgen
Hallo,
Normalerweise prüft man Objekte und Methoden (exemplarisch) vor ihrem Einsatz auf ihre Existenz.
Warum exemplarische Objekte?
Wieso »normalerweise«?
Mein DOM-Test sieht z.B. so aus:
var kannDOM=document.getElementsByTagName && document.getElementsByTagName('body')[0].appendChild;
...
if (kannDOM) ...
Von getElementsByTagName schließt du darauf, dass der Browser das gesamte DOM 3 Core, DOM 2 HTML, DOM 2 Style, DOM 3 Events usw. implementiert...? Du musst hellseherische Fähigkeiten haben. ;)
Mathias
Hallo molily,
Von getElementsByTagName schließt du darauf, dass der Browser das gesamte DOM 3 Core, DOM 2 HTML, DOM 2 Style, DOM 3 Events usw. implementiert...? Du musst hellseherische Fähigkeiten haben. ;)
nein, natürlich nicht. Aber ich weiß, was ich einsetze und was ich überprüfen muss, und dass ich nicht jedesmal jede Methode und jedes Objekt überprüfen muss. Die Variable "kannDOM" heißt für mich "kann soviel DOM, wie ich brauche".
Gruß, Jürgen