/ 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
Problemer med innerHTML i Mozilla
Fra : Ryan Kristensen


Dato : 01-05-05 15:29

Jeg har været igang med at lege med innerHTML, men jeg har lidt problemer
med Mozilla, når jeg sender contentType:application/xhtml+xml.
Tilsyneladende fanger den ikke:
if (typeof(paragraph.innerHTML)!='undefined') {

men går i stedet videre og fejler ved:
paragraph.innerHTML = "test";

Hele funktionen kan ses her:
var paragraph = document.getElementById('test');
if (typeof(paragraph.innerHTML)!='undefined') {
paragraph.innerHTML = "test";
}
else {
paragraph.appendChild(document.createTextNode('test'));
}
}

Link til en side der viser problemet:
<url:http://ryankristensen.com/tests/innerHTML.asp>
Siden virker som den skal i Opera, men ikke i Mozilla. - Og IE kan jo ikke
se application/xhtml+xml.

Er der nogen der har et forslag til, hvordan man undgår at Mozilla fejler?

--
Ryan Kristensen

 
 
Jens Gyldenkærne Cla~ (01-05-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 01-05-05 22:24

Ryan Kristensen skrev:

> Jeg har været igang med at lege med innerHTML, men jeg har
> lidt problemer med Mozilla, når jeg sender
> contentType:application/xhtml+xml. Tilsyneladende fanger den
> ikke: if (typeof(paragraph.innerHTML)!='undefined') {

Der kommer en generel js-fejl på din side:

Error: uncaught exception: [Exception... "Component returned
failure code: 0x80004005 (NS_ERROR_FAILURE)
[nsIDOMNSHTMLElement.innerHTML]" nsresult: "0x80004005
(NS_ERROR_FAILURE)" location: "JS frame ::
http://ryankristensen.com/tests/innerHTML.asp :: test :: line 14"
data: no]

Har du prøvet at se om det hjælper hvis du lægger scriptet
eksternt?

Prøv evt. også at køre Venkman (javascript debugger til Mozilla og
Firefox) på siden.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Tomasz Otap (01-05-2005)
Kommentar
Fra : Tomasz Otap


Dato : 01-05-05 23:51

Jens Gyldenkærne Clausen wrote:
> Ryan Kristensen skrev:
>>contentType:application/xhtml+xml. Tilsyneladende fanger den
>>ikke: if (typeof(paragraph.innerHTML)!='undefined') {
>
> [nsIDOMNSHTMLElement.innerHTML]" nsresult: "0x80004005
> (NS_ERROR_FAILURE)" location: "JS frame ::


Jeg faldt over denne her artikel, hvor brug af innerHTML vs. DOM-metoder
bliver diskuteret:

http://www.developer-x.com/content/innerhtml/

Ret interessant. Hvis innerHTML-implementationen er så buggy i
Gecko-browsere, er det nok sikrere at holde sig til DOM-modellen, især
da innerHTML er ikke en W3C standard. På den anden side lader den til at
være en del hurtigere end DOM-manipulationer, og nok mere udbredt.

Anyways, du kan vel bruge check for paragraph.firstChild i stedet?

------------
var paragraph = document.getElementById('test');
if (paragraph.firstChild) {
paragraph.firstChild.nodeValue='test';
}
else {
paragraph.appendChild(document.createTextNode('test'));
}
------------

t

Ryan Kristensen (02-05-2005)
Kommentar
Fra : Ryan Kristensen


Dato : 02-05-05 10:12

On Mon, 02 May 2005 00:51:04 +0200, Tomasz Otap
<tomasz@otap.justRemoveThis.dk> wrote:

> Ret interessant. Hvis innerHTML-implementationen er så buggy i
> Gecko-browsere, er det nok sikrere at holde sig til DOM-modellen, især
> da innerHTML er ikke en W3C standard. På den anden side lader den til at
> være en del hurtigere end DOM-manipulationer, og nok mere udbredt.

Så vidt jeg kan teste mig frem til, så virker innerHTML fint i Mozilla
1.7.5, når content-type er text/html.
Ved application/xhtml+xml så kan den tilsyneladende kun læse fra innerHTML.
Hvis nu bare den var implementeret på samme måde som document.all, så
kunne man finde ud af, at man ikke skulle bruge den metode, før man
forsøgte på det.

> Anyways, du kan vel bruge check for paragraph.firstChild i stedet?
>
> ------------
> var paragraph = document.getElementById('test');
> if (paragraph.firstChild) {
> paragraph.firstChild.nodeValue='test';
> }
> else {
> paragraph.appendChild(document.createTextNode('test'));
> }

Dette giver ingen forskel, - andet end, at der ikke er noget firstChild på
paragraph, så den går videre til
paragraph.appendChild(document.createTextNode('test'));
hvilket selvfølgelig virker fint, dog kan man ikke udskrive <br /> på
denne måde.

Jeg har løst problemet på denne måde:
var arrErrorMsg = errormsg.split('<br />');
// errormsg er en streng der indeholder forskellige fejlbeskeder, som
gerne skulle adskilles af et linieskift.
var paragraph = document.createElement('p');
paragraph.id = 'errormsg';

for (a=0;a<arrErrorMsg.length-1;a++) {
paragraph.appendChild(document.createTextNode(arrErrorMsg[a]));
paragraph.appendChild(document.createElement('br'));
}
myForm.insertBefore(paragraph,myForm.firstChild);

Men derfor kunne jeg alligevel godt tænke mig, at finde ud af, om der var
en måde man kunne teste på, så Mozilla ikke ville forsøge at skrive til
innerHTML.

--
Ryan Kristensen

Ryan Kristensen (02-05-2005)
Kommentar
Fra : Ryan Kristensen


Dato : 02-05-05 10:12

On Sun, 01 May 2005 23:23:48 +0200, Jens Gyldenkærne Clausen
<jens@gyros.invalid> wrote:

> Der kommer en generel js-fejl på din side:
>
> Error: uncaught exception: [Exception... "Component returned
> failure code: 0x80004005 (NS_ERROR_FAILURE)
> [nsIDOMNSHTMLElement.innerHTML]" nsresult: "0x80004005
> (NS_ERROR_FAILURE)" location: "JS frame ::
> http://ryankristensen.com/tests/innerHTML.asp :: test :: line 14"
> data: no]

Jeg har prøvet at kigge på den, men kan nu ikke helt decifrere, hvad de
mener med det.

> Har du prøvet at se om det hjælper hvis du lægger scriptet
> eksternt?

Ingen forskel

> Prøv evt. også at køre Venkman (javascript debugger til Mozilla og
> Firefox) på siden.

Der kommer ingen fejlmeddelelse, - men jeg er heller ikke sikker på, at
jeg bruger den korrekt.

--
Ryan Kristensen

Martin Hintzmann And~ (01-05-2005)
Kommentar
Fra : Martin Hintzmann And~


Dato : 01-05-05 23:33

Ryan Kristensen wrote:
>
> Er der nogen der har et forslag til, hvordan man undgår at Mozilla fejler?
>

Du skal kontrollere på document.innerHTML og ikke paragraph.innerHTML.
Og så vil jeg også mene at der er nok at spørge på følgende måde:
if (document.innerHTML) { ... }

--
Martin Hintzmann Andersen
http://www.hintzmann.dk/

Ryan Kristensen (02-05-2005)
Kommentar
Fra : Ryan Kristensen


Dato : 02-05-05 10:12

On Mon, 02 May 2005 00:32:34 +0200, Martin Hintzmann Andersen
<no@spam.invalid> wrote:

> Du skal kontrollere på document.innerHTML og ikke paragraph.innerHTML.
> Og så vil jeg også mene at der er nok at spørge på følgende måde:
> if (document.innerHTML) { ... }

Dette gør ingen forskel. Så vidt jeg kan se, så kan Mozilla godt læse fra
innerHTML, men den kan ikke skrive til den - når den er i
application/xhtml+xml.
I text/html virker det fint.

--
Ryan Kristensen

Jens Gyldenkærne Cla~ (02-05-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 02-05-05 10:27

Ryan Kristensen skrev:

> Dette gør ingen forskel. Så vidt jeg kan se, så kan Mozilla godt læse fra
> innerHTML, men den kan ikke skrive til den - når den er i
> application/xhtml+xml.

En googling giver en del information om emnet - her er et par af de
første links:

<http://www.mozilla.org/docs/web-developer/faq.html#xhtmldiff>
<http://www.quirksmode.org/bugreports/archives/2004/11/innerhtml_in_xh.html>

Søgningen: <http://kortlink.dk/s2d> eller udfoldet
<http://www.google.dk/search?sourceid=mozclient&ie=utf-8&oe=utf-8&q=mozilla+application%2Fxhtml%2Bxml+innerhtml>

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Martin Hintzmann And~ (02-05-2005)
Kommentar
Fra : Martin Hintzmann And~


Dato : 02-05-05 11:11

Ryan Kristensen wrote:
>
>
> Dette gør ingen forskel. Så vidt jeg kan se, så kan Mozilla godt læse
> fra innerHTML, men den kan ikke skrive til den - når den er i
> application/xhtml+xml.
> I text/html virker det fint.
>

Ja, du kan ikke benytte document.write() og der er skrive adgang på
innerHTML, når du benytter den content-type. Da man ellers ville kunne
indsætte ugyldigt XHTML kode.

--
Martin Hintzmann Andersen
http://www.hintzmann.dk/

Ryan Kristensen (03-05-2005)
Kommentar
Fra : Ryan Kristensen


Dato : 03-05-05 11:59

On Mon, 02 May 2005 12:10:44 +0200, Martin Hintzmann Andersen
<no@spam.invalid> wrote:

> Ja, du kan ikke benytte document.write() og der er skrive adgang på
> innerHTML, når du benytter den content-type. Da man ellers ville kunne
> indsætte ugyldigt XHTML kode.

Nå, selvfølgelig.
Lidt ærgeligt at man så ikke kan teste, om det virker. Men så bliver man
da tvunget til at benytte ordentlig kode

--
Ryan Kristensen

Søg
Reklame
Statistik
Spørgsmål : 177495
Tips : 31968
Nyheder : 719565
Indlæg : 6408489
Brugere : 218886

Månedens bedste
Årets bedste
Sidste års bedste