/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
FireFox og Javascript
Fra : Birger Sørensen


Dato : 17-04-07 16:15

Hvordan får man FireFox til at forstå jacascript?

http://indeks.bbsorensen.com/

Elementer i dokumentet, tildeles en id, for at man kan bruge dem
i script - men ikke i FF, uden først at skulle specialbehandle?
Det er heller ikke muligt at bruge innerText eller at scalere
billeder (eller andre elementer)?

function SpecJS() {
   return (( browser != IE) && ( browser != Opera));
   }

function MapDraw() {
   if ( SpecJS()) {
      Map = document.getElementById( 'Map');
      iS = document.getElementById( 'iS');
      }
   scale = ( Math.ceil( scale * 10))/10;
   Map.style.pixelHeight = OimgY/scale;
   iS.innerText = scale;
   }

FF giver ingen fejl - og gør heller ikke som forventet. Faktisk
gøres absolut intet.
Effektivt for såvel besøgende som udvikler.

Hvor findes oplysninger om "javascript" i FF?
Hvordan udskiftes en text med en anden i script i FF?
Hvordan ændres størrelse på elementer gennem javascript i FF?

Det er fint at man vil gøre tingene bedre.
Hvorfor skal det også være anderledes?

Birger

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Martin (18-04-2007)
Kommentar
Fra : Martin


Dato : 18-04-07 08:30

Birger Sørensen wrote:
> function SpecJS() {
>    return (( browser != IE) && ( browser != Opera));
>    }

1:
Tjek ALDRIG på hvilken browser der bruges...
men tjek kun på hvad browseren KAN.

> function MapDraw() {
>    if ( SpecJS()) {
>       Map = document.getElementById( 'Map');
>       iS = document.getElementById( 'iS');

Ved ikke... men prøv lige at fjerne mellemrummet ( 'Map og ( 'iS
og fjern lige din if


>       }
>    scale = ( Math.ceil( scale * 10))/10;

scale er ikke defineret, så den vel højst sandsynligt være 0,
og 0*10/10 = 0

Så det kunne også være et problem

Birger Sørensen (18-04-2007)
Kommentar
Fra : Birger Sørensen


Dato : 18-04-07 13:19

Martin wrote in dk.edb.internet.webdesign.clientside:
> Birger Sørensen wrote:
> > function SpecJS() {
> >    return (( browser != IE) && ( browser != Opera));
> >    }
>
> 1:
> Tjek ALDRIG på hvilken browser der bruges...
> men tjek kun på hvad browseren KAN.

Jo da. Hvordan?
Elementer defineret med en id, er variable i javascript i andre
Browsere.
<div id="Top"...
javascript (eller Jscript eller emcascript):
Top.innerText = 'Dav do';
udskifter eksisterende tekst i div'en.
FF kender ikke Top. Her er
Top = document.getElementById( 'Top');
nødvendig.
Og alligevel gøres ingenting (Ovenstående ændrer ikke teksten i
Top til den ønskede), og der gives ingen (fejl)meddelelse..


>
> > function MapDraw() {
> >    if ( SpecJS()) {
> >       Map = document.getElementById( 'Map');
> >       iS = document.getElementById( 'iS');
>
> Ved ikke... men prøv lige at fjerne mellemrummet ( 'Map og (
'iS
> og fjern lige din if

Min if gør at linierne kun eksekveres i FF, som ikke forstår
Javascript, og er derfor nødvendig.
Andre browsere ved allerede hvad Map og iS er, og skal derfor
ikke udføre linierne.
Mellemrummene mellem parantesen er og dens indhold gør koden
læselig, har ingen betydning for udførelsen, og er en semantik
jeg har brugt i 20 år - det bliver der ikke lavet om på...

> >       }
> >    scale = ( Math.ceil( scale * 10))/10;
>
> scale er ikke defineret, så den vel højst sandsynligt være 0,
> og 0*10/10 = 0
>
> Så det kunne også være et problem

Nej.
scale er en særdeles veldefinert global variabel - et tal større
end eller lig 1. Og som det fremgår med max en decimal.

"Mit problem" er at FF ikke forstår javascript.
Og egentlig opfatter jeg det ikke som "mit problem", men en
alvorlig mangel i FF...
Prøv bare at sammenligne med visning i Opera eller IE..
( http://indeks.bbsorensen.com/ )

Birger

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Martin (19-04-2007)
Kommentar
Fra : Martin


Dato : 19-04-07 16:11

Birger Sørensen wrote:
> Hvordan får man FireFox til at forstå jacascript?
>
> http://indeks.bbsorensen.com/
>
> Elementer i dokumentet, tildeles en id, for at man kan bruge dem
> i script - men ikke i FF, uden først at skulle specialbehandle?
> Det er heller ikke muligt at bruge innerText eller at scalere
> billeder (eller andre elementer)?

>    scale = ( Math.ceil( scale * 10))/10;
>    Map.style.pixelHeight = OimgY/scale;

Nu kiggede jeg lige din side igennem, og kan bare ikke se hvor scale
bliver sat henne?

>    iS.innerText = scale;

I firefox og i IE kan man bruge .innerHTML

>    }
>
> FF giver ingen fejl - og gør heller ikke som forventet. Faktisk
> gøres absolut intet.
> Effektivt for såvel besøgende som udvikler.
>
> Hvor findes oplysninger om "javascript" i FF?

Lige her...
<http://developer.mozilla.org/en/docs/JavaScript_Language_Resources>

> Hvordan udskiftes en text med en anden i script i FF?

document.getElementById('id').innerHTML = 'Hej med dig';

<span id='id' style='font-size:10px;'></span>
Fx.

> Hvordan ændres størrelse på elementer gennem javascript i FF?

document.getElementById('id').style.font-size = '20px';

> Det er fint at man vil gøre tingene bedre.
> Hvorfor skal det også være anderledes?


Tjaa... måske er det IE der har understøttet noget forkert i javascript
standarden.... Hvem ved

Iflg google:
javascript innertext = 233.000 resultater
javascript innerhtml = 1.200.000 resultater
Hvad der rigtigt og hvad der ikke er rigtigt, skal jeg ikke kunne sige,
men 1 ting ved jeg... innerHTML virker i både Firefox 1.0+ , IE 6+ og i
Opera 9

Birger Sørensen (19-04-2007)
Kommentar
Fra : Birger Sørensen


Dato : 19-04-07 18:55

Martin wrote in dk.edb.internet.webdesign.clientside:
> Birger Sørensen wrote:
> > Hvordan får man FireFox til at forstå jacascript?
> >
> > http://indeks.bbsorensen.com/
> >
> > Elementer i dokumentet, tildeles en id, for at man kan bruge dem
> > i script - men ikke i FF, uden først at skulle specialbehandle?
> > Det er heller ikke muligt at bruge innerText eller at scalere
> > billeder (eller andre elementer)?
>
> >    scale = ( Math.ceil( scale * 10))/10;
> >    Map.style.pixelHeight = OimgY/scale;
>
> Nu kiggede jeg lige din side igennem, og kan bare ikke se hvor scale
> bliver sat henne?


var OimgX, OimgY, scale;

function SetScale() { //kaldes i body.onload()
   if ( SpecJS()) {
      MapDiv = document.getElementById( 'MapDiv');
      }
   sX = OimgX/MapDiv.offsetWidth;
   sY = OimgY/MapDiv.offsetHeight;
   if (sX > sY) { scale = sX; }
   else { scale = sY; }
   MapDraw();
   }

function MapDraw() {
   if ( SpecJS()) {
      Map = document.getElementById( 'Map');
      }
   scale = ( Math.ceil( scale * 10))/10;
   Map.style.pixelHeight = OimgY/scale;
   }

I øvrigt ændes scale ved klik på knapper for zoom...

>
> >    iS.innerText = scale;
>
> I firefox og i IE kan man bruge .innerHTML

Også i Opera.
Forskellen på innerHTML og innerText er at innerText stripper HTML tags,
for at forhindre misbrug.
Jeg kan f.eks. have en gæstebog, hvor brugere kan indtaste en tekst, som
vises til andre brugere.
En ondsindet person kunne med et simpelt script f.eks. få mine sider til at
redirekte til et andet sted - som kunne resultere i at den besøgende kunne
få virus, etc...
Derofr bruger jeg innerText og ikke innerHTML.
innerHTML forstås af både IE og Opera - men altså ikke af FF...?

>
> >    }
> >
> > FF giver ingen fejl - og gør heller ikke som forventet. Faktisk
> > gøres absolut intet.
> > Effektivt for såvel besøgende som udvikler.
> >
> > Hvor findes oplysninger om "javascript" i FF?
>
> Lige her...
> <http://developer.mozilla.org/en/docs/JavaScript_Language_Resources>
>

Tak for det. Vil se på det, og formentlig også bruge det.. :)

> > Hvordan udskiftes en text med en anden i script i FF?
>
> document.getElementById('id').innerHTML = 'Hej med dig';

document.getElementById('id').innerHTML =
'<script>document.URL="http//:www.disney.com"';

>
> <span id='id' style='font-size:10px;'></span>
> Fx.
>
> > Hvordan ændres størrelse på elementer gennem javascript i FF?
>
> document.getElementById('id').style.font-size = '20px';

>
> > Det er fint at man vil gøre tingene bedre.
> > Hvorfor skal det også være anderledes?
>
>
> Tjaa... måske er det IE der har understøttet noget forkert i javascript
> standarden.... Hvem ved
>
> Iflg google:
> javascript innertext = 233.000 resultater
> javascript innerhtml = 1.200.000 resultater
> Hvad der rigtigt og hvad der ikke er rigtigt, skal jeg ikke kunne sige,
> men 1 ting ved jeg... innerHTML virker i både Firefox 1.0+ , IE 6+ og i
> Opera 9

Kan ikke bruge innerHTML. Mangler innerText.
Eftersom der ikke gives fejl, må man antage at funktionen understøttes...?

Birger

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Martin (19-04-2007)
Kommentar
Fra : Martin


Dato : 19-04-07 20:28

Birger Sørensen wrote:
> En ondsindet person kunne med et simpelt script f.eks. få mine sider til at
> redirekte til et andet sted - som kunne resultere i at den besøgende kunne
> få virus, etc...
> Derofr bruger jeg innerText og ikke innerHTML.

Det vidste jeg så ikke :)
Men burde vel være ret simpelt at lave en regexp på det :)

> innerHTML forstås af både IE og Opera - men altså ikke af FF...?

Jo da, innerHTML forstås også af FF, bruger det ret meget selv, med mit
lille googlemap site

Birger Sørensen (20-04-2007)
Kommentar
Fra : Birger Sørensen


Dato : 20-04-07 10:55

Martin wrote in dk.edb.internet.webdesign.clientside:
> Birger Sørensen wrote:
> > En ondsindet person kunne med et simpelt script f.eks. få mine sider til at
> > redirekte til et andet sted - som kunne resultere i at den besøgende kunne
> > få virus, etc...
> > Derofr bruger jeg innerText og ikke innerHTML.
>
> Det vidste jeg så ikke :)
> Men burde vel være ret simpelt at lave en regexp på det :)

Jo da.
Det bliver bare lidt træls at skulle opfinde den dybe tallerken hver gang man
skal have suppe, eller det varme vand når man trænger til et bad.
Alt til ære for FF, der så gerne vil være bedre end de andre. Det er den IMHO
ikke - tværtimod, koster den en masse unødvendigt arbejde...

> > innerHTML forstås af både IE og Opera - men altså ikke af FF...?
>
> Jo da, innerHTML forstås også af FF, bruger det ret meget selv, med mit
> lille googlemap site

Der skulle selvfølgelig stå
"innerText forstås af både IE og Opera - men altså ikke af FF...? "
ved ikke med Opera, men i hvert fald IE4, forstår også innerText..

Jeg bruger også innerHTML, hvor der er brug for det.
Hvor jeg kun vil skifte teksten ud, eller der er risiko for at kompromitere den
besøgendes sikkerhed, bruger jeg innerText.
Også den anden vej, i øvrigt...
HTML: <div id="Tdiv">En <i>tekst</i> her</div>
script: txt = Tdiv.innerText; // txt = 'En tekst her'
Så enkelt er det. Prøv det i FF!


Birger

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Martin (20-04-2007)
Kommentar
Fra : Martin


Dato : 20-04-07 12:25

Birger Sørensen wrote:
> Alt til ære for FF, der så gerne vil være bedre end de andre. Det er den IMHO
> ikke - tværtimod, koster den en masse unødvendigt arbejde...

Jeg tror sku aldrig Firefox har haft intentioner om at være "de bedste",
men de har bare ville understøtte standarden - som de også gør meget ud
af - ISÆR på stylesheet området.

Men så åbenbart ikke lige på innerText, prøv at smide det ind i en bug
report og se hvad de siger til det.

John S. Thomsen (20-04-2007)
Kommentar
Fra : John S. Thomsen


Dato : 20-04-07 12:55

Martin wrote:
> Birger Sørensen wrote:
>> Alt til ære for FF, der så gerne vil være bedre end de andre. Det er
>> den IMHO
>> ikke - tværtimod, koster den en masse unødvendigt arbejde...
>
> Jeg tror sku aldrig Firefox har haft intentioner om at være "de bedste",
> men de har bare ville understøtte standarden - som de også gør meget ud
> af - ISÆR på stylesheet området.
>
> Men så åbenbart ikke lige på innerText, prøv at smide det ind i en bug
> report og se hvad de siger til det.

I bug 343357 comment 2 [1] kan følgende læses:

innerText is called textContent in Firefox (and in the standards).
HTML5 will probably add innerText as a synonym though.


[1] https://bugzilla.mozilla.org/show_bug.cgi?id=343357#c2

Martin (20-04-2007)
Kommentar
Fra : Martin


Dato : 20-04-07 13:07

John S. Thomsen wrote:
> I bug 343357 comment 2 [1] kan følgende læses:
>
> innerText is called textContent in Firefox (and in the standards).
> HTML5 will probably add innerText as a synonym though.

Sørme om ikk Firefox IGEN overholder standarden....
<http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#Node3-textContent>

Birger Sørensen (20-04-2007)
Kommentar
Fra : Birger Sørensen


Dato : 20-04-07 16:29

Martin wrote in dk.edb.internet.webdesign.clientside:
> John S. Thomsen wrote:
> > I bug 343357 comment 2 [1] kan følgende læses:
> >
> > innerText is called textContent in Firefox (and in the standards).
> > HTML5 will probably add innerText as a synonym though.
>
> Sørme om ikk Firefox IGEN overholder standarden....
> <http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030609/core.html#Node3-textContent>

Tak for det, begge to.
Det hjalp en hel del.

Birger

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408933
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste