2017-08-01 13 views
4

iframe(https://booking.yourdomain.comからhttps://www.yourdomain.com)のコンテンツを取得しようとしているため、高さを設定できます。ドメインとプロトコルが一致してもサブドメインが一致しないiframeコンテンツの高さを取得する

var booking_iframe = document.querySelector('iframe'); 

booking_iframe.onload = function() { 
    booking_iframe.style.height = booking_iframe.contentWindow.document.body.offsetHeight + 'px'; 
} 

しかし、これは次のエラー発射:だから、これは(私がhereからの発現を取った)のように、すべてのコンテンツは、表示されている

VM389:1 Uncaught DOMException: Blocked a frame with origin "https://www.yourdomain.com" from accessing a cross-origin frame. 
    at <anonymous>:1:54 

ドメインとプロトコルが一致しますが、サブドメインにはありません、

提案がありますか?

(あなたはデ・デバッガでプレイしたい場合は、私は本番環境でだけのiframeでtest.htmlを作成しました。)回避策として

-EDIT-

: スクロールを有効にする方法任意のアイデアiframeの内容について同一生成元ポリシーは、ブラウザをブロックしている理由は、ある

+0

ドメインは「一致」しません。 「サブドメイン」という概念は、同じ起源の方針とクロスオリジンの制限が関係している限り、実際には存在しません。ブラウザーに関する限り、あなたが扱っているものは、 '' https:// www.yourdomain.com''と 'https://some.completely'のどちらにもマッチしない2つのドメインと事実上同じです。 other.site.com' – sideshowbarker

+0

「iframeのコンテンツのスクロールを有効にする」とはどういう意味ですか?私はそれがデフォルトで有効になっているようです(この[jsfiddle](http://jsfiddle.net/ConnorsFan/5s4u7bz9/)参照; WindowsではChrome、Firefox、IEでテスト済み)。 – ConnorsFan

+0

質問(test.html)のリンクをチェックすると、それは私の場合ではないことがわかります。 –

答えて

1

(固定の高さとオーバーフロースクロールを試みたが、スクロール=「はい」が、機能しません)。 https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy#Changing_originを参照してください詳細については、

document.domain = "yourdomain.com"; 

は、問題を回避両方にJSの次の行、IFRAMEを含むページ、とiframe内にロードされたページを追加します。

編集:コンテンツに基づいてiframeのサイズを変更するには、iframe-resizerをおすすめします。

+0

私のtest.htmlのソースコードをチェックすると、私はすでに自分のところでやっています。他のサブドメインは、私がアクセスできないc-nameレコードです。 –

+0

https://www.islamallorca.com/booking-test.htmlのソースコードには、 'window.domain = 'islamallorcaがあります。 com '; 'ではなく、' document.domain =' islamallorca.com ''ではありません。 **ドキュメント**ドメインを試してください。 次に、このコード行がiframe内にロードされているページにも存在することを確認します。現時点では、まだ埋め込みページ(iframe src、https://booking.islamallorca.com:4475/fwbookingresponsivestep/...など)には表示されません。 – pwagner

+0

実際、私は間違いを犯して代わりにプロパティをウィンドウに設定しました!私のコード( 'booking_iframe.contentWindow.document.body.offsetHeight + 'px'; // 150pxを返しますがコンテンツはより大きくなりました)を変更しても、iframeの高さ(コンテンツではない)が返されます。どのようにそれを得るための任意のアイデア?ありがとう! –

関連する問題