Avatar billede tgv Nybegynder
25. april 2008 - 10:34 Der er 25 kommentarer og
1 løsning

IFRAME innerHTML problem

Hej eksperten, jeg har et problem med et iframe. Den er defineret i html sourcen som:

<iframe SRC="http://www.google.com" WIDTH="200" HEIGHT="200" id="contentframe" name="contentframe" onload="test(this)">
</iframe>

vha. onload funktionen vil jeg så alerte dens indre html kode ud, således at jeg kan søge efter strenge i den (og nej det er ikke google :))

Problemet er at når jeg kalder:

var iframe = document.getElementById("contentframe");
alert(iframe.document.body.innerHTML);

får jeg hovedsidens HTML indhold, og ikke googels.

Hvad skal jeg gøre?
Avatar billede w13 Novice
25. april 2008 - 10:55 #1
Du mangler at bruge contentWindow før document, når det er et iframe:

var iframe = document.getElementById("contentframe");
alert(iframe.contentWindow.document.body.innerHTML);

Men bemærk, at iframet skal være loadet, før du kan dette.
Avatar billede tgv Nybegynder
25. april 2008 - 10:58 #2
Når jeg prøver dette laver den fejl:

  var iframe = document.getElementById("contentframe");
  alert(iframe.contentWindow.document.body.innerHTML);

Og for at være sikker (selvom onload venter til frame er færdigloaded) har jeg sat funktionen til at blive kørt af en knap

Jeg har så prøvet mig frem og når jeg blot tager iframe.contentWindow siger den [OBJECT] men document findes ikke.
Avatar billede w13 Novice
25. april 2008 - 11:00 #3
Hvad indeholder IFramet? Kan vi se siden? Hvad hvis du bruger contentDocument?
Avatar billede w13 Novice
25. april 2008 - 11:00 #4
contentDocument i stedet for contentWindow, altså.. Og så skal document nok også udelades.
Avatar billede tgv Nybegynder
25. april 2008 - 11:04 #5
Det eneste som iframet indeholder er www.google.com, og vil blot have den html kode der ligger mellem <body> /<body>. google er blot en testside til dette.

Dette er hele siden:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="aaaa.aspx.cs" Inherits="aaaa" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
   
    <script type="text/javascript">
<!--
var kode;



function Button1_onclick() {
  var iframe = document.getElementById("contentframe");
  alert(iframe.contentDocument.body.innerHTML);
 
}

//-->
</script>
</head>
<body>
<iframe SRC="http://www.google.com" WIDTH="200" HEIGHT="200" id="contentframe" name="contentframe">
</iframe>
    <form id="form1" runat="server">
    <div>
     
        <input id="Button1" type="button" value="button" onclick="Button1_onclick()" /></div>
    </form>
</body>
</html>
Avatar billede tgv Nybegynder
25. april 2008 - 11:07 #6
iframe.contentDocument er desuden undefined :/
Avatar billede w13 Novice
25. april 2008 - 11:11 #7
Hmmm. Det kan godt være, vi ikke har adgang via IFrames til andre domæner, når vi taler JavaScript. :(
Avatar billede tgv Nybegynder
25. april 2008 - 11:14 #8
Hmm det må da være muligt at få fat i source code (ligesom IE gør når man trykker "view source"). Synes bare også jeg har prøvet alt - og er ikke fordi jeg aldrig har lavet en side før hehe :)
Avatar billede tgv Nybegynder
25. april 2008 - 11:16 #9
Selvom jeg tager en side fra mit eget domæne - så får jeg stadig parents htmlkode og ikke sidens :/
Avatar billede w13 Novice
25. april 2008 - 11:22 #10
Og du bruger:

function Button1_onclick() {
  var iframe = document.getElementById("contentframe");
  alert(iframe.contentWindow.document.body.innerHTML);
}

?

Eller:

function Button1_onclick() {
  var iframe = document.getElementById("contentframe");
  alert(iframe.contentWindow.getElementsByTagName("body")[0].innerHTML);
}
Avatar billede tgv Nybegynder
25. april 2008 - 11:28 #11
Bruger den første - men ingen af dem virker :/

Kan godt se ideen med tagname og finde første instans af <body> men den siger blot "error" :/ Det er generelt når jeg skriver noget ud over contentWindow så virker det ikke - har du msn? så kan du tilføje tgv_cs@hotmail.com hvis du har tid :)
Avatar billede w13 Novice
25. april 2008 - 11:42 #12
Jeg foretrækker at skrive her, jeg er jo også meget aktiv, så jeg ser næsten med det samme, når du skriver.

Derudover synes jeg, vi har prøvet alt, hvad jeg lige kan komme på. Kan ikke se, hvad der skulle være galt..
Avatar billede tgv Nybegynder
25. april 2008 - 11:45 #13
Er forståeligt, kan virkelig heller ikke se problemet - og er så mange andre sider der laver PRÆCIS det nummer jeg vil - og viser hvordan man får innerhtml. Er helt blank, men tak for forsøgene :)
Avatar billede w13 Novice
25. april 2008 - 11:46 #14
Har du lagt det ud på nettet, når du forsøger? Det kan måske være en del af problemet..
Avatar billede tgv Nybegynder
25. april 2008 - 11:48 #15
nej har jeg ikke, kører det bare fra VS2008, kan da lige prøve :)
Avatar billede tgv Nybegynder
25. april 2008 - 11:49 #16
samme problem :/
Avatar billede tgv Nybegynder
25. april 2008 - 12:03 #17
bare glem det - prøver en anden tilgang til problemet - men tak ! :)
Avatar billede w13 Novice
25. april 2008 - 12:04 #18
Oki. =)

Så husk at oprette et svar og acceptere det, så spørgsmålet lukkes og du får dine point igen.
Avatar billede tgv Nybegynder
25. april 2008 - 12:21 #19
skide god ide :)
Avatar billede tgv Nybegynder
25. april 2008 - 12:22 #20
lige gyldigt hvor mange ganget jeg trykker accepter kkommer den bare igen.. :)
Avatar billede tgv Nybegynder
25. april 2008 - 12:22 #21
genialt..
Avatar billede olebole Juniormester
25. april 2008 - 21:08 #22
<ole>

Du kan under ingen omstændigheder scripte mellem to domæner med JavaScript - og derfor heller ikke læse en fil fra et andet domæne  =)

/mvh
</bole>
Avatar billede olebole Juniormester
25. april 2008 - 21:09 #23
- men du kan lade din server læse dokumentet
Avatar billede Lasse S Novice
14. august 2008 - 13:29 #24
Hej TGV, m.fl.

Jeg sidder med samme problem. Nedenstående linie virker fint i FireFox, også når den kaldes allerede på <body onLoad... - MEN den virker ikke i IE, giver bare fejl "'document.GetElementById(...).ContentDocument' er null eller ikke et objekt"

Hvad betyder det? Fandt i andre en løsning?

vh Lasse
Avatar billede w13 Novice
14. august 2008 - 13:53 #25
Det skal være contentDocument og ikke ContentDocument. Dvs. med lille C.

Ellers kan du også prøve med:

contentWindow.document
Avatar billede Lasse S Novice
04. september 2008 - 23:58 #26
det virker stadig ikke :o(
Jeg har oprettet en særskilt tråd for mit problem, læs gerne med på http://www.eksperten.dk/spm/844291
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