Avatar billede heyde Nybegynder
18. oktober 2004 - 19:00 Der er 8 kommentarer og
1 løsning

innerHTML og Firefox. Hvad kan bruges i stedet?

Hejsa,
Jeg har denne kodelinie, der smider indholdet af iFramen iView ind i variablen htmlCode:
var htmlCode = iView.document.body.innerHTML;

Den gør som den skal i IE, men i Firefox bliver der ikke lagt noget data ind i variablen.
Jeg har læst mig frem til, at innerHTML åbenbart ikke er understøttet af mozilla/firefox, så hvad kan jeg gøre i stedet for?
Jeg har prøvet følgende kode, som heller ikke virker (hverken i IE eller Firefox):
var htmlCode = document.getElementById('iView').innerHTML;

Den perfekte løsning skulle jo gerne virke på alle browsere.
Avatar billede olebole Juniormester
18. oktober 2004 - 19:16 #1
<ole>

Download ned det samme Mozilla og FireFox. Uden dem kan du ikke lave HTML, der skal bruges til noget.
Havde du dem selv på din PC, ville du kunne forvisse dig om, det er noget vrøvl, du har læst  ;o)

<div id="ib">XXX</div>
<button onclick="alert( document.getElementById('ib').innerHTML )">TEST</button>

... fungerer i stort set alle browsere på markedet. Godtnok er innerHTML ikke med i W3C's DOM-bindings - men den er ikke desto mindre understøttet af alle væsentlige browsere  :)

/mvh
</bole>
Avatar billede heyde Nybegynder
18. oktober 2004 - 19:28 #2
Jeg bruger skam aldrig andet end FireFox, og har derfor selv oplevet problemet.
Det kode som du skriver virker helt fint, men jeg kan altså stadig ikke få det andet kode til det. Måske det bare skal skrives på en anden måde...
Avatar billede olebole Juniormester
18. oktober 2004 - 19:42 #3
Nej, du laver en eller anden fejl i din kode, vi ikke kan se  :)
Avatar billede heyde Nybegynder
18. oktober 2004 - 20:01 #4
Så kommer hele funktionen da her:
function ProcessNews()
{
    // Assign the HTML code to a hidden form variable
    var htmlCode = iView.document.body.innerHTML;
    //var htmlCode = document.getElementById('iView').innerHTML;
   
    document.frmNews.newsPost.value = htmlCode;
   
    // Make sure that all fields are completed
    if(document.frmNews.newsPost.value == '')
    {
        alert('Please enter some content for this news post.');
        iView.focus();
        return false;
    }
    return true;
}

Som den er nu, virker den helt fint i IE, men ikke i FireFox. Den linie der er kommenteret væk burde (efter min bedste overbevisning) virke i FireFox, men det gør den desværre ikke.
Avatar billede roenving Novice
19. oktober 2004 - 01:03 #5
Nej, det gør den ikke, fordi innerHTML på et iframe-element ikke er noget ...

For et iframe-element indeholder et window-element, som indeni indeholder et html-dokument, som så indeholder html-kode, så du er mindst 2 generationer galt, hvilket også fremgår af dit IE-kald, hvor du jo også bruger document.body imellem !-)

F.eks. kan du bruge:

    var htmlCode = window.frames['iView'].document.body.innerHTML;

-- og så virker det (stort set !-) overalt ...
Avatar billede heyde Nybegynder
19. oktober 2004 - 01:11 #6
Roenving, det du har skrevet virker helt fint i IE, men problemet er desværre det samme som i IE. :(

Er der ikke en anden måde at hive indholdet af en iframe ud?
Avatar billede heyde Nybegynder
19. oktober 2004 - 01:16 #7
ok, jeg er et spejlæg!
Jeg havde givet min iframe id="iView", men det var åbenbart ikke nok. Det hele gik helt fint, da jeg også skrev name="iView"

Hvis der er nogle der vil have point, kan I lige smide et svar...
Avatar billede roenving Novice
19. oktober 2004 - 02:00 #8
Ja, undskyld, jeg overvejede om jeg skulle skrive en rettelse, da jeg opdagede, at det jo nok var nødvendigt at fortælle, at det skulle have et name, men tænkte, det ser han jo nok ret hurtigt !-)
Avatar billede heyde Nybegynder
12. november 2004 - 00:21 #9
lukker og slukker...
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