Hej, Ja, det var inte lätt att se vad jag menar......har ju missat frågan...-) <code> Tackar för ditt svar!! Jag förstår hur du menar. Blev sent på jobbet idag (23:00) *gäsp* så jag har inte hunnit svara... ah, vänta nu! Man bugar o bockar för alla dina svar!!! <code></code> Noop, blir ingen skillnad...."OnClick-länk" i Netscape?
Jag har en liten funktion som ser ut så här:
<code>
function f_onMouseOut(val)
{
val.style.backgroundColor ='#FFECBA';
val.style.color = '#595959';
val.style.cursor = 'default';
}
</code>
Den ändrar alltså bakgrundsfärg mm när musen är över en tabellcell.
I cellerna har jag länkar, fast inga <code><a href=...</code>, utan jag har lagt en <code>onClick="javascript:window.location.href='lankadress.asp';"</code>.
Detta fungerar utmärkt i IE, men inte i Netscape. I alla fall inte i min versoin av NS, 4.75...
Kan man skriva något annat för att det ska fungera i Netscape också?
Tacksam för hjälp!!
/JockeSv: "OnClick-länk" i Netscape?
Se ovan på min fråga så har jag lagt till vad jag vill göra.....
Sorry /JockeSv: "OnClick-länk" i Netscape?
</code>
Nu var det lite lättare att se vad du frågade! :-)
Jag gissar att du anropar din funktion f_onMouseOut() via onMouseOut-eventet för respektive fält i tabellen och då skickar med fältets unika id till funktionen...
Anledningen att det inte fungerar är mycket riktigt att Netscape och IE använder sig av olika objekt-modeller för att referera till de olika delar som bygger upp en viss sida...
T ex i Netscape för att ändra färg (där id='test'):
<code>
document.layers['test'].color = 'red';
</code>
Motsvarande kod för Internet Explorer:
<code>
document.all['test'].style.color = 'red';
// eller i kort format
test.style.color = 'red';
</code>
Som du ser så är det ganska stora skillnader på hur man refererar till ett enskilt element... För att lösa detta så kan du antingen skriva två separata funktioner som i sin tur anropas av den funktion som du anropar via 'onMouseOver'-eventet etc... den gemensamma funktionen får då ta reda på vilken webbläsare som besökaren har och anropa rätt funktion i sin tur... lite jobbigt kanske?!
En annan lösning är att göra så koden fungerar för BÅDA webbläsarna (fast nu är det ju 'problem' med nya populära webbläsare som Mozilla och Opera... vet ej hur deras objekt-modell ser ut...)
För att göra en gemensam kod behöver du se vilken gemensam nämnare som finns mellan Netscape's och IE's sätt att referera ett enskilt element... och sedan använda dig av variabler för att hålla reda på skillnaderna och 'tillverka' rätt JavaScript-kod under tiden... T ex:
<code>
<script type="text/javascript">
<!--
layerRef = "";
styleRef = "";
// Testa webbläsaren
if (navigator.appName == "Netscape")
{
layerRef = ".layers"
styleRef = ""
}
else
{
layerRef = ".all"
styleRef = ".style"
}
// Nu kan du tillverka referenser för att ändra t ex färgen
// detta mha variablerna ovan och funktionen eval() som
// tolkar en text-sträng som JavaScript-kod
eval("document" + layerRef + "['test']" + styleRef + ".color = 'red'");
// -->
</script>
</code>
För mer exempel om DHTML, gå in på Microsofts eminenta referensverk som finns online, http://msdn.microsoft.com använd sedan sökrutan längst upp till vänster och sök efter 'dhtml reference' så dyker det upp en länk till detta... kom inte ihåg URL:en just nu...
Skrev koden utan att testa den, så håll tummarna... :-)
Lycka till!
// QezSv: "OnClick-länk" i Netscape?
MEN:
Bakgrunsfärgen fungerade i och för inte heller(men det gör den nu tack vare din hjälp....), fast vad jag egentligen frågade efter är hur man fixar till själva länken. Den är ju trots allt viktigast..
Alltså:
<code>
onClick="javascript:window.location.href='lankadress.asp';"
</code>
Detta funkar inte i Netscape 4.75. Kan man skriva på något annat sätt?
/JockeSv: "OnClick-länk" i Netscape?
Förstår inte riktigt här, menar du att den koden inte fungerar för Netscape?! När jag slår i min lilla referensbok här så står det att:
<code>
window.location = "index.html";
</code>
Skall fungera för IE 3+ och NN 2+
KANSKE ligger inte felet i själva koden för att byta URL på sidan utan i event-hanteraren... hm... är inte så bra på detta för Netscape, men kan det vara så att Netscape inte gillar onClick-eventet för andra saker än just länkar?! Låter iofs otroligt...
Kikar efter...
Jo, enligt samma bok så skall onClick eventet fungera för IE3+ och NN2+
Kanske bättre om du kipper in din nuvarande kod istället?!
// QezSv: "OnClick-länk" i Netscape?
Var ju lite trött som sagt! :-)
Du skall INTE skriva:
<code>
onClick="javascript:window.location.href='lankadress.asp';"
</code>
ordet 'javascript' behöver du BARA använda när du hänvisar till JavaScript-kod istället för en URL i en länk, t ex:
<code>
yes!
</code>
Men när du använder en event-hanterare så skall du inte skriva 'javascript' utan direkt skriva koden:
<code>
oh yeah!
</code>
Så i ditt fall skall koden se ut så här:
<code>
onClick="window.location.href='lankadress.asp'"
</code>
Som du ser så behöver du inte ha med ';' inne i en event-hanterare, BARA om du skall köra flera instruktioner. Faktum är att man egentligen inte behöver skriva ';' alls i JavaScript längre, fast jag gör det ändå tycker det ser 'renare' ut... :-)
Med koden jag såg i boken borde det räcka med:
<code>
onClick="window.location='lankadress.asp'"
</code>
testa det! och lycka till! :-)
// Qez
<br>
PS!
Själv tycker jag det är synd att det finns så många browsers, man kan göra så kul saker i IE numera, som t ex att ersätta delar av en HTML-sida med:
<code>
MyTag.style.innerHTML = "<b>Ooops!</b>";
</code>
DS!Sv: "OnClick-länk" i Netscape?
Men nu har jag upptäckt vad felet är, dock kan jag inte lösa det....
Om man man lägger onClick=........osv i en:
<code>
<a href="...." onClick=".....">
</code>
Så funkar det, men jag vill ju ha onClick:et en tabellcell, alltså:
<code>
<td onClick="....">
</code>
Det är då det inte funkar i Netscape.
Någon idé?!?!?!?!?
/JockeSv: "OnClick-länk" i Netscape?
Testa detta (har ej testat detta i Netscape..):
<code>
<script type="text/javascript" language="JavaScript">
<!--
function MyFunc()
{
alert("do something!");
}
// -->
</script>
<table>
<tr>
<td><span onClick="MyFunc()">Klicka?</span></td>
</tr>
</table>
</code>
Hoppas detta hjälper!
Du kan alltså använda taggarna <span> eller <div> för att markera ett avsnitt som du vill koppla ett StyleSheet eller event till...
Lycka till<br>
<b>//Qez</b>Sv: "OnClick-länk" i Netscape?
Jag tror jag lägger ner detta nu....orkar inte mer...
Jag får väl använda vanliga länkar, även om det inte blir som jag tänkt mig...
Tack för dina försök i alla fall!!
/Jocke