0

私はJavaScriptが少し苦手なので、助けてください。body タグの一番下にこれがあります:

<iframe id="scriptFrame" name="scriptFrame" height="0" width="0">
<script type="text/javascript" language="javascript">
alert("Hello World");
parent.alert("Hello world");
function foo()
{
   alert("Hello World");
}
</script>
</iframe>

どちらのアラートもポップアップしません。私は何を間違っていますか?html と head タグを追加しようとしましたが、役に立ちませんでした。document.getElementById('scriptFrame').contentWindow.foo() と frames['scriptFrame'].foo() も試しましたが、どちらも機能しませんでした

4

5 に答える 5

2

<iframe>タグにコンテンツを直接追加することはできないことに注意してください。JavaScriptを使用している場合でも、iframe内のページが親ページと同じドメインからのものである場合にのみコンテンツを追加できます。したがって、次のことを行う必要があります。

<html>
<body>
<script >
function foo()
{
   alert("Hello World");
}
</script>
<iframe id="scriptFrame" onload="foo()"name="scriptFrame" height="0" width="0"> 
</iframe>
</body>
</html>

iframeから親JS関数を呼び出すことは可能ですが、親とiframeに読み込まれたページの両方が同じドメイン(abc.com)からのものであり、両方が同じプロトコルを使用している場合、つまり両方がhttp://またはhttpsにある場合に限ります。 //。

下記の場合、通話は失敗します。

  1. 親ページとiframeページは異なるドメインのものです。

  2. それらは異なるプロトコルを使用しています。1つはhttp://にあり、もう1つはhttps://にあります。

この制限の回避策は非常に安全ではありません。

たとえば、ドメインsuperwinningcontest.comを登録し、人々の電子メールへのリンクを送信したと想像してください。彼らがメインページをロードしたとき、私はそこにいくつかのiframeを隠して、Facebookフィードを読んだり、最近のAmazonまたはPayPalの取引を確認したり、十分なセキュリティを実装していないサービスを使用した場合は、彼らからお金を送金したりすることができましたアカウント。そのため、JavaScriptは同じドメインと同じプロトコルに制限されています。

于 2013-02-14T15:26:16.260 に答える
1

iframe のコンテンツはレンダリングされません。iframe 内で何かを指定する場合、それは src 属性で読み込まれたコンテンツのフォールバックです (iframe をサポートしていないブラウザーの場合)。

そのため、iframe に onload を使用するか、iframe のコンテンツを別のページに配置して src-attribute で指定します。

于 2013-02-14T15:29:47.587 に答える
1

iframe がそのコンテンツをロードする URI で iframe の src 属性を使用する必要があります。

インラインに挿入する情報は、この要素の src 属性で指定します。一方、IFRAME 要素のコンテンツは、フレームをサポートしていないか、フレームを表示しないように構成されているユーザー エージェントによってのみ表示されるべきです。

スクリプトは iframe タグ内にあるため、フレームをサポートしていないブラウザーでのみ表示されます。

于 2013-02-14T15:29:57.830 に答える
0

<html>iframe 内にある必要があり、<script>タグは<head>または 内にある必要があります<body>

また、language属性 of<script>は推奨されないことに注意してください。

于 2013-02-14T15:08:07.980 に答える