2016-09-20 4 views
3

さまざまなサイズのボディをレンダリングおよびiframe処理する親ページがあります。Uncaught SecurityErrorポートの問題:Iframeのサイズ変更

599キャッチされない例外SecurityError:あなたは次のエラーを取得するwwwサイトはアウトとにナビゲートされるしかしとき「http://www.example.com」原点とフレームにアクセスすることから「http://example.com」原点とフレームをブロックされました。プロトコル、ドメイン、およびポートは一致する必要があります。

フォームはiframeでレンダリングされますが、スクロールの高さは正しく変更されません(iframeにはスクロール機能を持​​たせることができず、フレームの下部に向かって追加のスペースが必要です)。

これは、ページ上の次のiframe /機能の起こる:

<iframe id="iframe1" src="http://www.example.com/virtual-directory" height="" width="300px" frameborder="0" onload="iframeLoaded()"></iframe> 
<script> 
    function iframeLoaded() { 
    var iFrameID = document.getElementById('iframe1'); 
    if (iFrameID) { 
     iFrameID.height = ""; 
     iFrameID.height = iFrameID.contentWindow.document.body.scrollHeight + 20 + "px"; 
    } 
    } 
</script> 

私はこの記事SecurityError: Blocked a frame with origin from accessing a cross-origin frameを見ていたが、私は正常に機能するには、このサイズ変更を取得するためにそのチェックを実装する場所を正確に確認していませんセキュリティ上のリスクはありません。

答えて

1

親とiframeの両方をフルコントロールしている場合は、ConroyPの答えはResizing an iframe based on contentです。

(それは受け入れ答えだ)

それは少し複雑ですが、それは私のために働いています。ネットワーク速度に応じて、ほとんど瞬間的になります。

唯一の欠点は、ページ内のページを変更したときにiframeのコンテンツをスクロールしないことです。

2

この問題を解決する方法はいくつかあります。

目のオプションは、iFrameの-サイズ変更のLIBを使用することです

最初は、あなたのiframeタグのSCRのATTRIBからhttp://example.comを削除することですので、それだけでSRC =「/仮想ディレクトリ」です。

https://github.com/davidjbradshaw/iframe-resizer

1

あなたは、iframe要素にサンドボックス= "許可-同一生成元" を追加しようとしたしましたか? それはトリックを行う必要があります。

それが動作する場合は、この資料を確認してください:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe

それはあなたがIFRAMEを与えることができる権限のすべての種類にあなたのアクセスを提供します。

関連する問題