2016-08-03 5 views
0

私は他の質問を検索し、提案を試みましたが、回答が必要なように機能していないようです。jQueryを使用してIframeからhtmlを取得

私はデータベーステーブルからメールを取り出し、iframe内のメールの本文を表示しています。私はその後、javascriptファイル内の電子メールの本文のhtmlを取得する必要があります。私が試してみました

コード:

var body = $('#email-body').contents().find('html').html(); 

RETURNS: <head></head><body></body> 

var body = '<?php echo $email->body;?>'; 

RETURNS: Invalid or unexpected token 
(most likely due to the linebreaks the HTML has within it.) 

最初のオプションは動作するはずのように思えるが、要求されたとして、それは完全な内容に引っ張っていません。コメント1として

--EDIT--

、私は次の試み:

var iframe = document.getElementById('email-body'); 
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document; 
var body; 
if (iframeDocument) { 
    body = iframeDocument.documentElement.outerHTML; 
} 

RETURNS: <html><head></head><body></body></html> 

- EDIT 2 -

Iフレームがように移入され:

<iframe id="email-body" src="/api/emails/email/{{{ $email->id }}}/body" onload="resizeIframe(this)"></iframe> 

私がこれをテストしているメール:

<!DOCTYPE html> 
<html lang="en-US"> 
    <head> 
     <meta charset="utf-8"> 
    </head> 
    <body> 
     <h2>Testing</h2> 
     <div>And again.</div> 
    </body> 
</html> 
+0

は見http://stackoverflow.com/questions/926916/how-to-get-the-bodys-content-of-an-iframe-in-javascript –

+0

あなたは(.find '削除するとどうなりますか'html') '... body 'に変更することもできます(' html ')。 var body = $( '#email-body')。contents()。find( 'body')。html(); –

+0

@JaromandaXこれは以下を返します。Uncaught TypeError:ボディの代わりにnullを返すか、または何も返さない。 – user2759865

答えて

0

正しいデータを取得するためにiframeがロードされたらスクリプトを実行する必要がありました。

var body = ''; 
$('iframe').on('load', function() { 
    body = $('#email-body').contents().find('html').html(); 
}); 
関連する問題