Browserweiche nach javascript
conni
- javascript
Hallo alle zusammen,
habe folgendes Problem:
Nach einer Introanimation soll unterschieden werden, ob der Browser javascript liest oder nicht und ob es Opera ist. Habe dazu einen einfachen HTML-Verweis geschrieben, der die Folgeseite ohne Javascript aufruft:
<a href="index_start_ohne_js.htm" target="_parent" onClick="js_auf()">[ENTER]</a>
Mit onClick="js_auf()" wird ein script in head aufgerufen, das auf die Seite mit javascript führen soll. Das sieht so aus:
<script type="text/javascript">
<!--
function js_auf(){
if(navigator.appName.indexOf("Opera")>-1){
window.location.href = "index_start_ohne_js.htm";
}
else {
open('index_start.htm');
self.close();
}
}
//-->
</script>
Wenn ich im unteren Teil noch ein target einarbeite (_self) funzt es gar nicht, daher wird das andere Fenster geschlossen (leider erst nach Abfrage). Mit location.href im unteren Teil (nach else) klappt das ganze überhaupt nicht.
Bastele schon seit einigen Tagen daran herum, hab auch schon viel im Forum nachgelesen, aber nichts klappendes gefunden.
Vielen Dank schonmal
Conni
Moin Moin !
Mit der Fragestellung bettelst Du geradezu um eine Nörgelaktion mit anschließender Diskussion um neue Fenster. Warum bleibst Du nicht einfach in dem Fenster, das der User haben will ?
Die Abfrage auf Opera willst Du sicherlich haben, weil Opera eine Popup-Unterdrückung hat. Die hat der Mozilla auch, und wenn ich einen miesen Tag habe und der Webwasher gerade aktiv ist, auch jeder andere Browser.
Mein Tip: Laß den Quatsch. Ansonsten lies mal in SelfHTML nach, welche Parameter die open-Funktion des Window-Objekt hat.
Alexander
Moin Moin !
Mit der Fragestellung bettelst Du geradezu um eine Nörgelaktion mit anschließender Diskussion um neue Fenster. Warum bleibst Du nicht einfach in dem Fenster, das der User haben will ?
Die Abfrage auf Opera willst Du sicherlich haben, weil Opera eine Popup-Unterdrückung hat. Die hat der Mozilla auch, und wenn ich einen miesen Tag habe und der Webwasher gerade aktiv ist, auch jeder andere Browser.
Mein Tip: Laß den Quatsch. Ansonsten lies mal in SelfHTML nach, welche Parameter die open-Funktion des Window-Objekt hat.
Alexander
Gerade weil ich kein anderes Fenster oder popup-Fenster öffnen wollte, habe ich es im script mit lecation.href versucht, das hat aber überhaupt nicht geklappt. pop-up-Fenster finde ich auch nicht doll.
Conni
Hallo Conni,
Gerade weil ich kein anderes Fenster oder popup-Fenster öffnen wollte, habe ich es im script mit lecation.href versucht, das hat aber überhaupt nicht geklappt. pop-up-Fenster finde ich auch nicht doll.
Verstehe ich jetzt nicht. Was ist an
<script type="text/javascript">
<!--
location.href = "index_start.html";
//-->
</script>
<meta http-equiv="refresh" content="1; URL=index_start_ohne_js.html" />
problematisch? Und wegen welcher Methode willst Du Opera ausschließen? Denn dann solltest Du diese Methode abfragen und *nicht* den User-Agent.
Grüß,
Christian
Hallo Conni,
Gerade weil ich kein anderes Fenster oder popup-Fenster öffnen wollte, habe ich es im script mit lecation.href versucht, das hat aber überhaupt nicht geklappt. pop-up-Fenster finde ich auch nicht doll.
Verstehe ich jetzt nicht. Was ist an
<script type="text/javascript">
<!--
location.href = "index_start.html";
//-->
</script>
<meta http-equiv="refresh" content="1; URL=index_start_ohne_js.html" />problematisch? Und wegen welcher Methode willst Du Opera ausschließen? Denn dann solltest Du diese Methode abfragen und *nicht* den User-Agent.
Grüß,
Christian
Hallo Christian,
vielleicht habe ich mich ja schief ausgedrückt. Ich wollte überprüfen, ob javascript vom Browser gelesen werden kann oder nicht und dann auf die eine Seite (ohne javascript) oder auf die andere Seite (mit javascript) weiterlinken. Da mein Opera-Browser (6.05) das dann folgende script falsch ausliest, sollte auch Opera generell auf die Seite ohne javascript geführt werden. Darum ist das script im head mit if... else formuliert.
Es grüßt Conni
Hallo Conni,
vielleicht habe ich mich ja schief ausgedrückt. Ich wollte überprüfen, ob javascript vom Browser gelesen werden kann oder nicht und dann auf die eine Seite (ohne javascript) oder auf die andere Seite (mit javascript) weiterlinken. Da mein Opera-Browser (6.05) das dann folgende script falsch ausliest, sollte auch Opera generell auf die Seite ohne javascript geführt werden. Darum ist das script im head mit if... else formuliert.
Schon klar, aber *woran genau* stört sich Opera denn? Denn wenn Du ihn nur wegen dieser Eigenschaft, aber nicht prinzipiell ausschließt, dann können zukünftige Versionen von Opera, die Deine Seite vielleicht korrekt anzeigen, auch auf "die bessere Seite" deiner Seite kommen. ;-)
Grüße,
Christian
Hallo Conni,
vielleicht habe ich mich ja schief ausgedrückt. Ich wollte überprüfen, ob javascript vom Browser gelesen werden kann oder nicht und dann auf die eine Seite (ohne javascript) oder auf die andere Seite (mit javascript) weiterlinken. Da mein Opera-Browser (6.05) das dann folgende script falsch ausliest, sollte auch Opera generell auf die Seite ohne javascript geführt werden. Darum ist das script im head mit if... else formuliert.
Schon klar, aber *woran genau* stört sich Opera denn? Denn wenn Du ihn nur wegen dieser Eigenschaft, aber nicht prinzipiell ausschließt, dann können zukünftige Versionen von Opera, die Deine Seite vielleicht korrekt anzeigen, auch auf "die bessere Seite" deiner Seite kommen. ;-)
Grüße,
Christian
Hallo Christian,
woran sich opera da genau stört, weiß ich nicht. Auf der folgenden Seite befindet sich im linken Frame eine vollkommen auf javascript basierende Navigation. Das script ist ziemlich lang. Erstmal stehen in der Navigation alle Punkte untereinander. Bei Anklicken werden die weiteren Verzweigungen ausgeklappt. Jedenfalls schreibt opera alle an sich untereinander angeordneten Menüpunkte übereinander und macht jede Navigation unmöglich.
Gruß
Conni
Hallo Conni,
woran sich opera da genau stört, weiß ich nicht. Auf der folgenden Seite befindet sich im linken Frame eine vollkommen auf javascript basierende Navigation. Das script ist ziemlich lang. Erstmal stehen in der Navigation alle Punkte untereinander. Bei Anklicken werden die weiteren Verzweigungen ausgeklappt. Jedenfalls schreibt opera alle an sich untereinander angeordneten Menüpunkte übereinander und macht jede Navigation unmöglich.
Das sollte Opera aber schon können... Aber ohne Quelltext (besser gesagt: Link, da es "ziemlich lang" ist) können wir da wenig helfen.
Grüße,
Christian
Hallo Conni,
woran sich opera da genau stört, weiß ich nicht. Auf der folgenden Seite befindet sich im linken Frame eine vollkommen auf javascript basierende Navigation. Das script ist ziemlich lang. Erstmal stehen in der Navigation alle Punkte untereinander. Bei Anklicken werden die weiteren Verzweigungen ausgeklappt. Jedenfalls schreibt opera alle an sich untereinander angeordneten Menüpunkte übereinander und macht jede Navigation unmöglich.
Das sollte Opera aber schon können... Aber ohne Quelltext (besser gesagt: Link, da es "ziemlich lang" ist) können wir da wenig helfen.
Grüße,
Christian
Hallo Christian,
einen Link kann ich leider nicht geben, da die Seite ja noch entsteht. Auch mit Kürzung würde das hier den Rahmen sprengen.
Aber warum meine einfache if..else-Abfrage nicht funktioniert, (im IE, Netscape und Opera wird die "index_start_ohne_js.htm" aufgerufen) verstehe ich nicht. Vielleicht kannst du mir da helfen?
Im head steht:
<script type="text/javascript">
<!--
function js_auf(){
if(navigator.appName.indexOf("Opera")>-1){
open("index_start_ohne_js.htm");
}
else
window.location.href = "index_start.htm";
}
//-->
</script>
Die Funktion wird aufgerufen mit:<a href="index_start_ohne_js.htm" target="_parent" onclick="js_auf()">
Ich kann da keinen Fehler finden.
Viele Grüße
Conni
Hallo Conni,
(Fullquote gelöscht - zitiere nur das, worauf Du Dich beziehst)
einen Link kann ich leider nicht geben, da die Seite ja noch entsteht.
Auch mit Kürzung würde das hier den Rahmen sprengen.
Gut, ok, aber wenn Du die Seite fertig hast, kommst Du her und wir sagen Dir, woran es liegt, ok? (das will ich jetzt wirklich wissen, dass so etwas in Opera nicht läuft)
if(navigator.appName.indexOf("Opera")>-1){
Ich spiele jetzt mal den Schergen und sage Dir (um Dir jetzt erst mal zu helfen), dass Du Opera nicht so sondern besser über
if (window.opera) {
abfangen solltest. Dieser Variante funktioniert immer, Deine nur, wenn Opera sich nicht tarnt.
Die Funktion wird aufgerufen mit:<a href="index_start_ohne_js.htm" target="_parent" onclick="js_auf()">
Aha! Hier fehlt sollte ein onClick="js_auf(); return false;" hin, denn sonst wird das normale Link-Ziel geladen.
Grüße,
Christian
Hi Christian,
if(navigator.appName.indexOf("Opera")>-1){
Ich spiele jetzt mal den Schergen und sage Dir (um
Dir jetzt erst mal zu helfen), dass Du Opera nicht
so sondern besser über
»»
if (window.opera) {
abfangen solltest. Dieser Variante funktioniert
immer, Deine nur, wenn Opera sich nicht tarnt.
wie kommst Du auf diese Idee?
Viele Grüße
Michael
Hallo Michael,
wie kommst Du auf diese Idee?
- Opera/6.05 (Windows NT 4.0; U) [en]
- Mozilla/5.0 (Windows NT 4.0; U) Opera 6.05 [en]
- Mozilla/4.78 (Windows NT 4.0; U) Opera 6.05 [en]
- Mozilla/3.0 (Windows NT 4.0; U) Opera 6.05 [en]
- Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.05 [en]
Oooops. Ich hatte das irgendwo aber mal gelesen... (was es natürlich nicht richtiger macht) Ach ja, warscheinlich liegt es daran, dass ich nie JS-Browserweichen bastele. :)
Grüße,
Christian
Hi Conni,
Aber warum meine einfache if..else-Abfrage nicht funktioniert, (im IE, Netscape und Opera wird die "index_start_ohne_js.htm" aufgerufen) verstehe ich nicht.
Die Funktion wird aufgerufen mit:<a href="index_start_ohne_js.htm" target="_parent" onclick="js_auf()">
Du musst hinter die Funktion js_auf() noch ;return false; setzen, damit Browser mit Javascript den ursprünglichen Link ignorieren.
LG Roland
Hallo Conni,
woran sich opera da genau stört, weiß ich nicht. Auf der folgenden Seite befindet sich im linken Frame eine vollkommen auf javascript basierende Navigation. Das script ist ziemlich lang. Erstmal stehen in der Navigation alle Punkte untereinander. Bei Anklicken werden die weiteren Verzweigungen ausgeklappt. Jedenfalls schreibt opera alle an sich untereinander angeordneten Menüpunkte übereinander und macht jede Navigation unmöglich.
Das sollte Opera aber schon können... Aber ohne Quelltext (besser gesagt: Link, da es "ziemlich lang" ist) können wir da wenig helfen.
Grüße,
Christian
Hallo Christian,
einen Link kann ich leider nicht geben, da die Seite ja noch entsteht. Auch mit Kürzung würde das hier den Rahmen sprengen.
Aber warum meine einfache if..else-Abfrage nicht funktioniert, (im IE, Netscape und Opera wird die "index_start_ohne_js.htm" aufgerufen) verstehe ich nicht. Vielleicht kannst du mir da helfen?
Im head steht:
<script type="text/javascript">
<!--
function js_auf(){
if(navigator.appName.indexOf("Opera")>-1){
open("index_start_ohne_js.htm");
}
else
window.location.href = "index_start.htm";
}
//-->
</script>
Die Funktion wird aufgerufen mit:<a href="index_start_ohne_js.htm" target="_parent" onclick="js_auf()">
Ich kann da keinen Fehler finden.
Viele Grüße
Conni
Danke, danke
jetzt klappt es. Und ich hätte es nach ganzen Abenden des Probierens schon fast aufgegeben. Den Link gebe ich später, wenn alles soweit fertig ist, auch noch.
Viele Grüße
Conni
Hi Conni,
Nach einer Introanimation soll unterschieden werden, ob der Browser javascript liest oder nicht
<a href="alternative.html" onclick="window.location.href='mit_js.html';return false;">Link</a>
und ob es Opera ist.
*wah!*
Damit erschlägst du Opera 7, der sehrwohl mit den meisten Scripts zurechtkommt. Nicht schnell, aber doch. Frage ab, ob der Browser die verwendete Methode unterstützt, *niemals* seinen Namen und teste mit Opera 7.
LG Roland
Hi Conni,
Nach einer Introanimation soll unterschieden werden, ob der Browser javascript liest oder nicht
<a href="alternative.html" onclick="window.location.href='mit_js.html';return false;">Link</a>
und ob es Opera ist.
*wah!*
Damit erschlägst du Opera 7, der sehrwohl mit den meisten Scripts zurechtkommt. Nicht schnell, aber doch. Frage ab, ob der Browser die verwendete Methode unterstützt, *niemals* seinen Namen und teste mit Opera 7.
LG Roland
Hi Roland,
ich habe es mit opera 6.05 getestet und er linkt mit dem oberen script auf die Seite mit script, liest das dann folgende script nicht oder nur vermanscht.
Der Tip mit a href funktioniert aber im IE und Netscape schonmal prima. Danke
Conni
hi,
Nach einer Introanimation soll unterschieden werden, ob der Browser javascript liest oder nicht und ob es Opera ist.
Abgesehen von der seltsamen opera-Abfrage *grusel*... starte auf der Javascriptlosen Seite und leite mit location.replace("...") auf die Javascriptseite weiter. Das kannst Du mit Bedingungen versehen, am Besten - wie bereits hier erwaehnt - fragst Du bekannte Objekte ab. Was Du abfragst haengt natuerlich von Deinen weiteren Scripten ab. Die minimale Loesung saehe etwa so aus:
if (document.layers || document.all || document.getElementById) location.replace("...");
Browser, die kein Javascript koennen oder die Objekte nicht kennen bleiben dann auf der Javascriptlosen Seite "haengen".
Alle anderen werden weitergeleitet, der history-Eintrag wird ersetzt, so dass es beim Zurueckgehen nicht zum laestigen Haengenbleiben an der Weiterleitung kommen kann.
Gruesse Joachim