3

他サイトからページを読み込むiframeページを作りたいです。「jQuery iFrame Sizing」を試して、iframe の自動高さを設定しましたが、失敗しました。

どうしたの...?

これは私のコードです:

on Head:
<script type="text/javascript" src="js/jquery.js" ></ script >
<script type="text/javascript" src="js/iframe.js"></script >

on Body:
<iframe scrolling="no" frameborder="0" width="1025" src="http://mydomain.com"/>
</iframe>
4

5 に答える 5

4

はい、ブラウザのセキュリティ制限により、Javascript は別のドメインからロードされた iframe のソースにアクセスできません。ただし、それには回避策があり、理想的ではありませんが、機能します。

mydomain.com のコンテンツを読み込んで出力する単純なローカル スクリプトを使用して、ブラウザを「裏切る」ことができます。次に、iframe src をこのスクリプトに向けます。その場合、ブラウザーは同じドメインを扱っていると見なし、制限は適用されません。

したがって、これの代わりに:

<iframe scrolling="no" frameborder="0" width="1025" src="http://mydomain.com" />

次のようなことを試すことができます:

<iframe scrolling="no" frameborder="0" width="1025" src="/local-script.php?url=http%3A%2F%2Fmydomain.com" />

次に、必要なドメイン/ドキュメントのコンテンツをロードする単純なロジックを local-script.php に追加すると、すべてがうまくいくはずです。PHP スクリプトの例が必要な場合は、LMK。

于 2009-10-13T12:25:21.123 に答える
1

可能ですが、簡単ではありません。私は、Shindig opensocial コンテナーが同様のことを行うことを知っています。iframe でホストされるガジェットは、コンテナが iframe 内のガジェット コンテンツの変更に応じて動的に iframe のサイズを変更するように要求できます。

これを処理するコードは、dynamic-height.jsおよびdynamic-height-util.jsの shindig svn リポジトリにあります。

うまくいけば、そこから有用なものを抽出できます。

于 2009-10-13T11:27:41.217 に答える
0

クロスアクセスがあることを考慮して、iframeをそのコンテンツに設定する私の解決策はOKです。そうでない場合は、phpファイルに次のヘッダーを追加できます。

header("Access-Control-Allow-Origin: *");

したがって、サイズ変更を行う JS コードは次のようになります。

function resizeFrame(f) {
     var size = f.contentWindow.frameElement.clientHeight;
     f.style.height = size + "px";              
     }

次に resizeFrame(id reference) を呼び出します

于 2014-06-04T11:57:55.150 に答える
0

元のサイトの最初の 2 行:

: クロスサイト スクリプティングに関連するブラウザーのセキュリティ制限により、このソリューションは、同じドメインから呼び出されたiframe ページ コンテンツに対してのみ機能します。

于 2009-10-13T11:32:41.817 に答える