NS4.x 'document.writeln'
Harald Buerner
- javascript
0 Dieter Raber0 Cyx230 LenaLuna
Hallo,
Das untenstehende script lauft nicht unter NS4.x (NS6 und IE6 ist es ok). Bin mir nicht sicher, aber ich glaube es liegt an dieser zeile:
document.writeln("<div id=" + div_id1 + " style='position:absolute; visibility:hidden'>");
wenn ich hier anstatt ("<div......hidden>") ganz normalen text einfuege z.b. ("test") arbeitet die function wie erwartet und schreibt 'test' in den body.
das script soll folgende aufgabe erfuellen: je nachdem, von welcher seite aus auf das script zugegriffen wird soll der inhalt dynaschisch veraendert werden. das soll alles auf EINER seite geschehen. d.h. eine weiterleitung kommt nicht in frage, weil an diese seite ein online shop angebunden werden soll.
auch 'normale' div-layer, die man je nach bedarf ein- und ausblendet kommen hier nicht in frage, weil der text druckbar sein soll.
vielen dank schon mal!
<html>
<head>
<title></title>
<SCRIPT language=JavaScript>
<!--
Aussage = document.referrer;
Ergebnis = Aussage.match(/productId=17966|productId=17967|productId=17968|productId=17969|productId=17315|productId=17970/gi);
if(Ergebnis)
var currentsystem = Ergebnis[0];
var currentsystem = "productId=17969"; //test
switch(currentsystem){
case"productId=17966": currentsystem = 'sequoiacardio';break;
case"productId=17967": currentsystem = 'sequoiagi';break;
case"productId=17968": currentsystem = 'aspencardio';break;
case"productId=17969": currentsystem = 'aspengi';break;
case"productId=17315": currentsystem = '128xp';break;
case"productId=17970": currentsystem = 'cypress';break;
// case"productId=17966": currentsystem = 'kinetdx2';break;
// case"productId=17966": currentsystem = 'kinetdx2';break;
default: currentsystem = 'allofthem';break;
}
function open_div(div_id1){
if (currentsystem != div_id1 && currentsystem != 'allofthem'){
document.writeln("<div id=" + div_id1 + " style='position:absolute; visibility:hidden'>");
}
}
function close_div(div_id2){
if (currentsystem != div_id2 && currentsystem != 'allofthem'){
document.write("</div>");
}
}
//-->
</SCRIPT>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<script language="javascript">open_div('sequoiacardio')</script>
SEQUOIA_cardio
<script language="javascript">close_div('sequoiacardio');</script>
<script language="javascript">open_div('sequoiagi')</script>
SEQUOIA_gi
<script language="javascript">close_div('sequoiagi');</script>
<script language="javascript">open_div('aspencardio')</script>
aspen-cardio
<script language="javascript">close_div('aspencardio');</script>
<script language="javascript">open_div('aspengi')</script>
aspen-gi
<script language="javascript">close_div('aspengi');</script>
<script language="javascript">open_div('128xp')</script>
128xp
<script language="javascript">close_div('128xp');</script>
<script language="javascript">open_div('cypress')</script>
cypress
<script language="javascript">close_div('cypress');</script>
</body>
</html>
Hallo Harald,
soweit ich das sehen kann, ist dein Problem die div_id: Netscape 4.x kann in manchen Versionen nicht mit einer Layer-ID umgehen, die Unterstriche enthaelt
Dieter
Hallo,
Das untenstehende script lauft nicht unter NS4.x (NS6 und IE6 ist es ok). Bin mir nicht sicher, aber ich glaube es liegt an dieser zeile:
document.writeln("<div id=" + div_id1 + " style='position:absolute; visibility:hidden'>");
wenn ich hier anstatt ("<div......hidden>") ganz normalen text
versuch mal die Style-Angaben zu trennen,
oben im head z.B. <style> .hdiv{position:absolute; visibility:hidden}</style>
und dann später document.writeln('<div id="'+div_id1+'" class="hdiv">');
Grüsse
Cyx23
hallo, harald
so gehts, auch im nc 4.xx
<html>
<head>
<title></title>
<style type="text/css">
<!--
.div_ein
{
position: absolute;
visibility: visible;
}
.div_aus
{
position: absolute;
visibility: hidden;
}
// -->
</style>
<SCRIPT language=JavaScript>
<!--
Aussage = document.referrer;
Ergebnis = Aussage.match(/productId=17966|productId=17967|productId=17968|productId=17969|productId=17315|productId=17970/gi);
if(Ergebnis)
var currentsystem = Ergebnis[0];
var currentsystem = "productId=17969"; //test
switch(currentsystem){
case"productId=17966": currentsystem = 'sequoiacardio';break;
case"productId=17967": currentsystem = 'sequoiagi';break;
case"productId=17968": currentsystem = 'aspencardio';break;
case"productId=17969": currentsystem = 'aspengi';break;
case"productId=17315": currentsystem = '128xp';break;
case"productId=17970": currentsystem = 'cypress';break;
// case"productId=17966": currentsystem = 'kinetdx2';break;
// case"productId=17966": currentsystem = 'kinetdx2';break;
default: currentsystem = 'allofthem';break;
}
function open_div(name_div)
{
if (currentsystem == name_div || currentsystem == "allofthem")
document.write("<div class="div_ein">");
else
document.write("<div class="div_aus">");
}
//-->
</SCRIPT>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<script language="javascript">open_div('sequoiacardio');</script>
SEQUOIA_cardio</div>
<script language="javascript">open_div('sequoiagi');</script>
SEQUOIA_gi</div>
<script language="javascript">open_div('aspencardio');</script>
aspen-cardio</div>
<script language="javascript">open_div('aspengi');</script>
aspen-gi</div>
<script language="javascript">open_div('128xp');</script>
128xp</div>
<script language="javascript">open_div('cypress');</script>
cypress</div>
</body>
</html>
du hast den fehler am richtigen ort vermutet.
der nc 4.xx schafft es nicht ein inline-css mit document.write() richtig zu parsen.
wenn du den erzeugten quelltext anschaust liefert er schrott.
bei style schreibt er z.Bsp. Ttyle.
muss dir ehrlich, keine ahnung warum. ich hatte dieses problem auch mal.
am besten definierst du das css extern oder im head.
damit du nicht für jede variante ein eigenes css brauchst habe ich deinen code etwas umgeschrieben.
die close_div-funktion erübrigt sich da du ja jedes div sowieso schliessen musst, also habe ich das hartcodiert.
gruss LenaLuna