1

私は信じられないほど、これに一日中苦労してきました。私のサイトには、ユーザーが特定のユーザーとの完全なチャット履歴をダウンロードできるオプションがあります。オンラインで読み込んで、おそらくブラウザーをクラッシュさせるのではありません。とにかく、履歴のダウンロードを要求すると、毎日の履歴を含むファイルを含む zip アーカイブが作成されます。一度にすべてを開くのに十分な強力なマシンと、すべての履歴ファイルを含むインデックス ファイルがない場合に備えてです。 iframe の形式 (同じ内容を 2 か所に書き込むのではなく)。

問題: 私がやりたいのは、Iframe の高さをそのコンテンツの高さと同じに設定することだけです。驚くべきことに、同じ起源のポリシーのために、これはクロムでは不当に不可能に思えます。私は最初、子 Iframe の体の scrollHeight を取得するだけで大​​丈夫だと思っていましたが、SOP は NO と言って顔を叩きました。次に、html タグの style.height を履歴ファイルから内部的に完全な高さに設定し、それを取得できると考えましたが、それも失敗しました。

私は本当に希望を失い始めています。誰か助けてもらえますか?

4

2 に答える 2

1

iframe コンテンツのページと iframe を呼び出すページに、次のように記述します。

<script>
    document.domain = 'http://yoursite.com'; (NOT www.)
</script>

また、必ず iframe WITHOUT を呼び出してくださいwww.

行う:<iframe onload = "setIframeHeight( this.id )" ...>

そしてiFrameHeight()次のようになります:

<script>
   document.domain = 'http://yoursite.com';
    function setIframeHeight( iframeId )
    {
     var ifDoc, ifRef = document.getElementById( iframeId );
     try
     {   
      ifDoc = ifRef.contentWindow.document.documentElement;  
     }
     catch( e )
     { 
      try
      { 
       ifDoc = ifRef.contentDocument.documentElement;  
      }
      catch(ee)
      {   
      }  
     }
     if( ifDoc )
     {
      ifRef.height = 1;  
      ifRef.height = ifDoc.scrollHeight;  
     }
 </script>

これがあなたにとってうまくいくかどうかはまったくわかりませんが、私にとってはうまくいきました。

于 2013-05-23T20:59:46.357 に答える
0

Marakana TechTV のこのビデオには、シームレスな iframe 統合のための優れたヒントが含まれています。

DisQus での postMessage とシームレスなエミュレーションによる iFrame の使用

さらに、機能を提供すると主張するjQueryプラグイン(テストされていません)があります。

house9/jquery-iframe-auto-height

于 2013-05-23T20:53:10.497 に答える