Avatar billede freddy-madsen Nybegynder
17. december 2004 - 12:29 Der er 9 kommentarer

Firefox og IE, forskelle

Hej.

Jeg sidder og bakser med at lave en ny grafisk version af min hjemmeside. Det er noget med nogle frames der oprettes med dynamisk indhold via JavaScript. Det virker efterhånden rimeligt godt på IE, men slet ikke på firefox, som jeg også meget gerne vil supportere.
Se evnt.: http://www.fremad-data.dk/ny/  (evnt med /index.html)

Spørgsmål:
1. Firefox klager over at jeg ikke har ret til at skrive i windows.document (kan ses i JavaScript konsollen - gælder også den lokale version på D:\...). Har lavet doument.open() og write(s) og .close()
Har også (har checket navigator.useragent):
if (topper.browser == 'MOZI') {
  netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite")
}
før .open()
(prøver også at disable efter .close() )

2. Jeg laver en frame med
<frame src="java script:top.f_logo()"
og en function, der returnerer hele HTML versionen - det er bare et <img> med logo.
Det logo vises ikke i firefox. Frame er helt hvid.

3. På min forside beregner jeg en del billeders pladseringer afhængigt at skærmens opløsning. På IE virker det, på firefox lægger den alle billeder i 0,0. Jeg bruger:
... opbygger en strengvariabel, med <IMG> der returneres fra en function:
' STYLE="position: absolute; top: ' + top_y + ' px; left: ' + top_x + ' px"'
...

4. Har du et godt link til hvad standard HTML er (w3c) - for at bruge så meget browser uafhængig kode som muligt


:-) Freddy
Avatar billede roenving Novice
17. december 2004 - 12:59 #1
1. den fejlmeddelelse kan jeg ikke gennemskue (
Error: uncaught exception: [Exception... "Component returned failure code: 0x80004003 (NS_ERROR_INVALID_POINTER) [nsIDOMNSHTMLDocument.write]"  nsresult: "0x80004003 (NS_ERROR_INVALID_POINTER)"  location: "JS frame :: http://www.fremad-data.dk/ny/ :: f_undermenu :: line 32"  data: no]
)

2. Din dannelse af html-koden ser lidt suspekt ud, men uden at teste det selv er jeg kun i stand til at pege på nogle detaljer, som dog måske kan rumme forklaringen ...
-- danlink-funktionen indeholder nogle mærkværdigheder:

- er p-variablen en god måde at løse problemet på ?-)
-- jeg ville bare escape plingen eller bruge en oktal-værdi: \' eller \47

- og så er det noget avanceret vrøvl at skifte cursor onmouseover, da en cursor præcis virker, når musen er over og ellers ikke, så fjern den del af onmouseover/out og skriv i stedet: style="cursor:pointer;" (som ikke virker i IE før v6, men så kan du tilføje ;cursor:hand; som alternativ !-)

3. Der må ikke være mellemrum mellem tallene og px !-)

4. Såvidt jeg ved findes det faktisk ikke, men en ide vil være at kigge efter i den officielle definition af sammenhængen mellem browserens objekter og java script: http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/ecma-script-language-binding.html og i DOM-specifikationen: http://www.w3.org/DOM/DOMTR
Avatar billede freddy-madsen Nybegynder
17. december 2004 - 13:38 #2
Tak skal du have, du er hurtig til at overskue sådan en smule kode :-)
Jeg har droppet p-variablen - selv om det vel mest er et spørgsmål om stil. Fand først de \ - tegn i dag.

Har ændret alle ' px' til 'px', men det løste desværre ikke problemet.

Det med cursoren har jeg først tilføjet i dag og netop fordi cursoren ikke ændrede sig, men blev ved at være en pil. Nu ændrer den sig til hand i IE, men stadig ikke i firefox.. Jeg tror ikke jeg forstår din style="..." variant.

Fik også lige tilføjet det med security til undermenuen..
Kigger på de links.

:-)
Avatar billede roenving Novice
17. december 2004 - 13:44 #3
Prøv:

<img src="billede_off.gif" onmouseover="this.src=this.src.replace(/_off/,'_on')" onmouseout="this.src=this.src.replace(/_on/,'_off')" style="cursor:pointer;">
Avatar billede freddy-madsen Nybegynder
17. december 2004 - 14:14 #4
TAK, Det virker, men altså kun i IE.
Jeg har lige lavet denne "mini" test, der virker i begge to (ikke med cursor dog).
Det ligner det jeg prøver at lave med logoet, men er uden frames....

:-) Freddy
***************
<!DOCTYPE html PUBLIC "-//W3C//DTD html 4.01 Transitional//EN">
<HTML><head><title>FreMad data - Logo</title>
<script type="text/javascript">
<!--
function ind(txt) {
alert('Ind '+txt)
}

function ud(txt) {
alert('Ud '+txt)
}

function klik(txt) {
alert('Klik '+txt)
}

// -->
</SCRIPT>

</head><BODY><P>

<IMG SRC="Grafik/logo-lillegron.gif" ALT="Logo alt" TITLE="logo titel" STYLE="position: absolute; top: 0px; left: 0px"
    WIDTH="150" HEIGHT="116"
      onMouseOver="ind('over'); this.style.cursor='hand'"
      onMouseOut="ud('fra'); this.style.cursor='auto'"
      onClick="pklik('på')">

<img src="Grafik/arbejde.gif" STYLE="position: absolute; top: 200px; left: 200px" onmouseover="this.src=this.src.replace(/_off/,'_on')" onmouseout="this.src=this.src.replace(/_on/,'_off')" style="cursor:pointer;">
</P></BODY></HTML>
********************************
Avatar billede roenving Novice
17. december 2004 - 14:41 #5
Prøv med:

<img src="Grafik/logo-lillegron.gif" alt="Logo alt" title="logo titel" style="position: absolute; top: 0px; left: 0px;width:150px;height:116;cursor:pointer;" onmouseover="ind('over');" onmouseout="ud('fra');" onclick="klik('på')">
Avatar billede roenving Novice
17. december 2004 - 14:42 #6
Hov ...

<img src="Grafik/logo-lillegron.gif" alt="Logo alt" title="logo titel" style="position: absolute; top: 0px; left: 0px;width:150px;height:116px;cursor:pointer;" onmouseover="ind('over');" onmouseout="ud('fra');" onclick="klik('på')">
Avatar billede freddy-madsen Nybegynder
17. december 2004 - 15:07 #7
Bingo! Det virker både i IE og firefox, det er bare det lille ';'.... ?
Har lavet testen om. Det var en del af vejen - tak indtil videre. Jeg får indarbejdet den seneste løsning i min HP, men er lidt i tvivl om det vil løse det med at placere grafikken rigtigt. Nu kommer jeg desværre til at lave noget andet arbejde :-)

:-) Freddy
********************************
<!DOCTYPE html PUBLIC "-//W3C//DTD html 4.01 Transitional//EN">
<HTML><head><title>FreMad data - Logo</title>
<script type="text/javascript">
<!--
var ude = 0
var inde = 0
function ind(txt) {
    inde += 1
}

function ud(txt) {
    ude += 1
}

function klik(txt) {
alert('Klik '+txt + ' inde='+inde+' ude='+ude)
}

// -->
</SCRIPT>

</head><BODY><P>
<img src="Grafik/logo-lillegron.gif" alt="Logo alt" title="logo titel"
    style="position: absolute; top: 0px; left: 0px;width:150px;height:116px;cursor:pointer;"
      onmouseover="ind('over');" onmouseout="ud('fra');" onclick="klik('på')">

<img src="Grafik/arbejde.gif" STYLE="position: absolute; top: 200px; left: 200px" onmouseover="this.src=this.src.replace(/_off/,'_on')" onmouseout="this.src=this.src.replace(/_on/,'_off')" style="cursor:pointer;">
</P></BODY></HTML>
******************
Avatar billede roenving Novice
17. december 2004 - 15:18 #8
-- når jeg laver en udskiftning af _off til _on skal du selvfølgelig have to billeder, som svarer til det, f.eks. 'arbejde_off.gif' og 'arbejde_on.gif' ...
Avatar billede freddy-madsen Nybegynder
19. december 2004 - 03:53 #9
Nu har jeg testet mere. Problemerne med firefox er tilsyneladende security...
Mine grafiske link kommer ikke til at stå rigtigt, fordi reference til top.variabel returnerer "NaN". Sætter jeg en værdi i det tilfælde, virker det - men det er desværre skærmens dimensioner jeg skal bruge der...
I hovedprogrammet (index.html) har jeg logoet defineret som en frame (det er også et link): <frame src="java script:top.f_logo()" name="osv. osv.....
Den vises ikke (rent hvid firkant i dens sted), javakonsollen siger
Error: uncaught exception: Permission denied to get property Window.f_logo
f_logo er også en function i index.html.

Den gode nyhed er at musen skifter rigtigt i begge miljøer :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester