web-dev-qa-db-ja.com

src属性のないiframe

ページに_<iframe>_を作成しますが、後でsrcを追加します。 src属性のないiframeを作成すると、一部のブラウザーで現在のページが読み込まれます。 srcに設定する正しい値は何ですか?空白のiframeをロードするだけですか?

私が見た答えは:

  • _about:blank_
  • _javascript:false_
  • javascript:void(0)
  • _javascript:"";_
  • 空白ページのURL

明確な勝者はいますか?そうでない場合、トレードオフは何ですか?

IE6以降のすべてのブラウザーで、HTTPSのURLに対する混合コンテンツの警告や、戻るボタン、履歴、またはリロードの奇妙さを持たないようにしたいと思います。

25
Paul Tarjan

「空の」iframeを作成するとき(iframeシムなど)の標準的なアプローチは、srcをjavascript:false;として設定することです。これは、iframeシムを作成するほとんどのJavaScriptライブラリで使用される方法です(YUIのオーバーレイなど)。

7
nefarioustim

すべてのブラウザが "about:blank"をサポートしているかどうかは不明なので、その場合は自分の空白ページを使用します。

別のアイデア:srcだけでなく、JavaScriptを使用してiframe全体を追加してみませんか?

10
Mario

コメントを再送信して、フォーム送信のターゲットとしてiframeを使用することを計画していることを明確にします。

私は204 no contentを送り返すサーバーの空のドキュメントを使用します。

それは避けます

  • IEおよびHTTPSモードでの "混合コンテンツ"警告
  • クライアントがjavascript:プロトコルを理解していないため、不要なエラー
  • と他のエキゾチックなシェニガン。

これも有効なHTMLです。

では、追加のリクエストを生成するとどうなるでしょうか。キャッシングヘッダーを正しく設定すると、クライアントごとに要求が1つだけになります。

6
Pekka

どうですか

about:blank
5
Jan Sverre

_javascript:false_:
IE10およびFF(Linuxのv23でチェック)は、コンテンツとして「false」を表示します。

javascript:void(0) && _javascript:;_:
IEはiframeに「ウェブページを表示できません」というエラーを表示します。また、srcを有効なURLからjavascript:void(0)に設定すると、ページが空白になりません。

_about:blank_:
IE 9を除くすべてのブラウザで機能します。パスが「null」のサーバーにリクエストを送信します。それでも最善のIMO

チェックアウト http://jsfiddle.net/eybDj/1
チェックアウト http://jsfiddle.net/sv_in/gRU3V/ JSを使用した動的更新でiframe srcがどのように変化するかを確認します

2
sv_in

javascript:falseは最新のブラウザで動作します。

私が見たところ、これは、ダムスパイダーがjavascript:falseをページとして読み込もうとしたときにのみ「失敗」します。

解決策:ダムスパイダーをブロックしてください。

1
Steve Magruder

私がこの質問に投稿したように、 空のiframe srcは有効ですか? の場合、src=属性を完全に省略しても問題ありません。

1
rjmunro

私はこのコード行に遭遇します:

iframe.setAttribute("src", "javascript:false");

同様に。削除したかったjavascript:URL

ウェブハイパーテキストアプリケーションテクノロジーワーキンググループからこのメモを見つけました[2019年10月2日更新]

[ https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-if​​rame-element] [4.8.5_The_iframe_element]

Iframeまたはフレーム要素のその他の手順は次のとおりです。

要素にsrc属性が指定されていない場合、またはその値が空の文字列である場合は、urlを "about:blank"というURLにします。

0

IMO:srcを指定しない場合、ページは検証されません。しかしそれについてです。 src = ""を指定すると、サーバーは多くの404エラーを記録します。

「ダメージ」のように本当に悪いことは何もありません。しかし、それでは実際にiframe自体を使用することは間違っていませんか?

°-

0
pixeline

はい、古いスレッドを復活させています。私を訴え。答えに興味があります。

トリガーがフォーム送信であるために動的にIFrameを作成できない理由がわかりません。これはあなたが望むことを正確に行いませんか?

<html>
<head>
<script type="text/javascript">
function setIFrame(elemName, target, width, height) {
    document.getElementById(elemName).innerHTML="<iframe width="+width+" height="+height+" src='"+target+"'></iframe>";
}
</script>
</head>
<body>
<div id="iframe" style="width:400px; height:200px"></div>
<form onSubmit="setIFrame('iframe', 'http://www.google.com', 400, 200); return false;">
<input type="submit" value="Set IFrame"/>
</form>
</body>
</html>
0
J C