Jump to content
Fórum Script Brasil
  • 0

Como pegar o conteudo de um iframe?


Guest --dam547 --

Question

Guest --dam547 --

Pessoal, dentro da minha página tenho um iframe que chama uma página externa, pois bem, preciso pegar o conteudo deste iframe (Mais precisamente o código fonte), já tentei usar as seguintes técnicas:

var x = document.getElementsByTagName("iframe")[0].contentDocument

var iframe = document.getElementById("iframe").contentWindow;
var conteudo = iframe.getElementsByTagName('body')[0]
alert(conteudo.innerHTML)

Ambas não obtive sucesso...

Se alguém tiver alguma opinião será bem vinda!

Abraços,

Felipe Damiani

Edited by fercosmig
Adicionar tag CODE
Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Felipão, seguinte.

Para verificar o conteúdo do primeiro iframe da página, tanto para iE quanto para FF é :

window.onload=function(){
ifr=document.getElementsByTagName("iframe")[0]

    if(ifr.contentWindow)
    ifr=ifr.contentWindow.document
    else
    ifr=ifr.contentDocument

alert(ifr.body.innerHTML)
}

Simples. No entanto, se quiser pegar um valor de uma página que não te pertence, externa ao seu servidor, pode desistir.

Você não pode pegar o conteúdo de uma página de domínio diferente, apenas no seu próprio domínio. Dará um erro de "Acesso negado" muito provavelmente. Isso é com iFrames e Ajax.

Akeleabraço

Link to comment
Share on other sites

  • 0
Tenta:

opener.nome_do_form.nome_do_campo.value = document.getElementById("nome_campo_outra_pagina").value;
Andreia, obrigado pela resposta, mais não resolve meu problema! :)
Felipão, seguinte. Para verificar o conteúdo do primeiro iframe da página, tanto para iE quanto para FF é :
window.onload=function(){
ifr=document.getElementsByTagName("iframe")[0]

    if(ifr.contentWindow)
    ifr=ifr.contentWindow.document
    else
    ifr=ifr.contentDocument

alert(ifr.body.innerHTML)
}

Simples. No entanto, se quiser pegar um valor de uma página que não te pertence, externa ao seu servidor, pode desistir.

Você não pode pegar o conteúdo de uma página de domínio diferente, apenas no seu próprio domínio. Dará um erro de "Acesso negado" muito provavelmente. Isso é com iFrames e Ajax.

Akeleabraço

Cara, acho que o meu problema não tem solução então hehe, a página que estou tentanto pegar o fonte é uma página externa :(,

será que não tem nenhum jeito de conseguir pegar???

Estou precisando muito disso, mais vou ver se acho um outro método para resolver esse problema....

qualquer dica será bem vinda,

Abraço a todos,

Felipe Damiani

Link to comment
Share on other sites

  • 0

É não tem como fazer não....Se tiver alguma forma de fazer isso pode ser com linguagens de servidor, tipo php. Talvez tentando dar um include sei lá. Mas tenho a impressão de que o include também não vai funcionar...

Eu de você deixava pra lá...isso não tem nenhuma utilidade a não ser copiar conteúdo alheio.

Por isso existem as api´s, que são interfaces que alguns sites disponibilizam para alguma operação conjunta.

Akeleabraço

Link to comment
Share on other sites

  • 0
É não tem como fazer não....Se tiver alguma forma de fazer isso pode ser com linguagens de servidor, tipo php. Talvez tentando dar um include sei lá. Mas tenho a impressão de que o include também não vai funcionar...

Eu de você deixava pra lá...isso não tem nenhuma utilidade a não ser copiar conteúdo alheio.

Por isso existem as api´s, que são interfaces que alguns sites disponibilizam para alguma operação conjunta.

Akeleabraço

Na verdade não é conteúdo alheio, mesmo porque a página que estou tentando copiar precisa de login e senha, então a idéia é fazer login, após isso ir para uma página onde lista produtos, a partir dai pegar o fonte para importar esses produtos para um banco remoto...

Vou dar mais uma pesquisada para ver se acho algma outra solução!

Abraços,

Felipe Damiani

Link to comment
Share on other sites

  • 0

Precisei e consegui fazer em Delphi. Veja os links :

http://www.delphifaq.com/faq/delphi/network/f249.shtml

http://www.scalabium.com/faq/dct0139.htm

https://www.clubedohardware.com.br/forums/topic/827939-como-ler-o-conteúdo-de-um-site-por-um-memo/

Adaptei o demo do Delphi (C:\Delphi7\Demos\CoolStuf\webbrows.dpr) e alterei os trecho dos codigo abaixo:

procedure TMainForm.FindAddress;
var
  EncodedDataString: string;
  PostData: OleVariant;
  Headers: OleVariant;
  i: integer;
begin
 //   http://www.delphifaq.com/faq/delphi/network/f249.shtml
  // First, create a URL encoded string of the data
  EncodedDataString := 'userName='+HTTPEncode('Luiz Inacio')+'&'+'UserPass='+HTTPEncode('MyPassword');

  // The PostData OleVariant needs to be an array of bytes
  // as large as the string (minus the 0 terminator)
  PostData := VarArrayCreate([0, length(EncodedDataString)-1], varByte);

  // Now, move the Ordinal value of the character into the PostData array
  for i := 1 to length(EncodedDataString) do
    PostData[i-1] := ord(EncodedDataString);
  Headers := 'Content-type: application/x-www-form-urlencoded'#10#13;

  // Parameters 2 and 3 are not used, thus EmptyParam is passed.
  WebBrowser1.Navigate('https://www.site_a_consultar.com.br',
                       EmptyParam, EmptyParam, PostData, Headers);
{
 //   http://www.scalabium.com/faq/dct0139.htm
   p:='='+HTTPEncode();
  h := 'Content-Type: application/x-www-form-urlencoded' + #10#13;
  UpdateCombo := True;
  //WebBrowser1.Navigate(WideString(Urls.Text), Flags, Flags, p, Flags);
  WebBrowser1.Navigate(WideString(''), EmptyParam, EmptyParam, p, h);
}
end;
 

procedure TMainForm.WebBrowser1DownloadComplete(Sender: TObject);
var
oStringList: TStringList;
html : string;
begin
  { Turn the stop button grey }
  StopBtn.ImageIndex := 2;
  { Stop the avi and show the first frame }
  Animate1.Active := False;
  //https://www.clubedohardware.com.br/forums/topic/827939-como-ler-o-conteúdo-de-um-site-por-um-memo/
  oStringList := TStringList.Create;
  try
    oStringList.Text := WebBrowser1.OleObject.document.Body.InnerHTML;
  html := oStringList.Text;
  except
  end;
  oStringList.Free;
  showmessage(html);
end;

Espero ter ajudado. Acho que ainda dá tempo. rsrsrs    :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...