Iframeに最初はsrc
を空白にしてから、ページが読み込まれるようにします。 JS関数を呼び出して、src
値を実際の値に設定します。
<iframe src="#" />
も有効ですOR javascript:;
などのようなものを使用する必要がありますか
ちょうど<iframe src='about:blank'></iframe>
HTML 5のワーキングドラフト、 セクション4.8.2 は、次のように述べています(私の強調):
src
属性は、ネストされたブラウジングコンテキストに含まれるページのアドレスを提供します。属性は、存在する場合、スペースで潜在的に囲まれた有効な空でないURLでなければなりません。
RFC 3986 によると、有効なURLは scheme name で始まる必要があり、相対参照は fragment のみで構成することはできません。
したがって、#
は有効なURLではないため、src
属性の値として使用しないでください。
代わりに about:blank を使用してください。
いいえ、空のiframe srcを指定するのは無効です
<iframe src="about:blank" />
を使用する必要があります。
#
は、現在のページ内のアンカーへの参照(または、AJAXリクエスト)。 iframeは現在のページのコンテンツを参照せず、AJAXリクエストでは使用されないため、iframeのソースとして使用しても意味がありません。
about:blank
は、空白のドキュメントを表示するためのクロスブラウザ標準です。
2012年6月8日更新:
src
属性が欠落している場合、 'living' spec はiframeを無効にしないようです:
要素の作成時にsrcdoc属性が設定されておらず、src属性も設定または設定されていないがその値を解決できない場合、ブラウジングコンテキストは最初のabout:blankページに残ります。
ただし、これらの属性の両方が設定されていない場合、ブラウジングコンテキストはデフォルトでabout:blank
になります。適切な後方互換性を提供するために、冗長にすることをお勧めします。現時点では、about:blank
URLを指定します。
Srcを完全に省略することもできるようです:
http://dev.w3.org/html5/spec/Overview.html#the-iframe-element
要素の作成時に、srcdoc属性がnot setであり、src属性がでもない場合setまたはsetですが、その値を解決できない場合、ブラウジングコンテキストは最初のabout:blankページに残ります。
About URIスキーム標準の一部として、about:blankは非常に優れたブラウザーサポートを備えているため、おそらく最適なオプションです。
about:blankメディアタイプがtext/htmlで文字エンコードがUTF-8の空のHTMLドキュメントを返します。これは、空白ページをHTML内のiframeなどのブラウジングコンテキストにロードするために広く使用されており、スクリプトによって変更される場合があります。 詳細はこちら
src
属性でabout:blank
を使用できます(先ほどarielが述べたように)。そうしないと、セキュリティで保護されたページから提供するときにエラーがスローされます。
安全なページhttps
は、安全でないWebサイトに安全でない可能性のあるデータのエラーをスローします。
Javascriptを介してiframeを追加してみてください。HTMLに空のiframeを含める必要はありません。
(jQueryの例)
<script type="text/javascript">
$().ready(function() {
$("<iframe />").attr("src", "http://www.bbc.co.uk/").appendTo("body");
});
</script>
Javascriptを使用してiframeを追加すると、適切な低下が可能になります。Javascriptを使用していないユーザーには、空のiframeが表示されません。
about:blank
を使用したくない場合は、次の例のようにsrc
のiframe
としてjavascriptを使用できます。
<iframe name="TV" id="tv" style="width:100%; background: #800000" src="javascript:document.write('<h3>Results Window</h3>')"></iframe>
上記の例は、単純なメッセージ<h3>Results Window</h3>
を持つ栗色の背景でiframe
を初期化します。ただし、リンクのターゲットはiframe
name
属性、つまりその例ではTV
と等しくなければなりません。
記録のために
次の例を考えてみましょう(Firefox 58ですが、すべてのブラウザに存在する可能性があります)。
<link href="css.css" rel="stylesheet" type="text/css"/>
<iframe src='about:blank'></iframe>
Iframeはcssの前にロードされるため、cssがロードされる前にページのレンダリングが表示されます。つまり少しの間、ページはcssなしで表示されます。
代わりに:
<link href="css.css" rel="stylesheet" type="text/css"/>
<iframe src='blank.html'></iframe>
正常に動作し、cssがロードされ、iframeが最終的にロードされます。