没有src属性的iframe

时间:2010-11-26 10:49:04

标签: javascript html iframe src

我想在页面上创建<iframe>,但稍后再添加src。如果我创建一个没有src属性的iframe,那么它会在某些浏览器中加载当前页面。为src设置的正确值是什么,以便只加载空白iframe?

我见过的答案是:

  • about:blank
  • javascript:false
  • javascript:void(0)
  • javascript:"";
  • 网址为空白页

有明显的赢家吗?如果没有,有什么权衡?

我希望在IE6以后的所有浏览器中都没有针对HTTPS网址的混合内容警告,也没有任何后退按钮,历史记录或重新加载奇怪的内容。

10 个答案:

答案 0 :(得分:10)

不确定所有浏览器是否支持“about:blank”,所以我只想使用您自己的空白页。

另一个想法:为什么不使用javascript而不仅仅是src添加整个iframe?

答案 1 :(得分:7)

创建“空”iframe(例如iframe垫片)时的标准方法是将src设置为javascript:false;。这是为您创建iframe填充程序的大多数JavaScript库使用的方法(例如YUI的覆盖)。

答案 2 :(得分:6)

重新发表评论,澄清您计划将iframe用作表单提交的目标:

我会在发送回204 no content的服务器上使用空文档。

避免

  • IE和HTTPS模式中的“混合内容”警告
  • 由于客户端不理解javascript:协议
  • 而导致不必要的错误
  • 和其他异国情调的恶作剧。

它也是有效的HTML。

那么如果它产生一个额外的请求怎么办?正确设置缓存标头,每个客户端只有一个请求。

答案 3 :(得分:5)

怎么样?
about:blank

答案 4 :(得分:2)

javascript:false
IE10和FF(在Linux中的v23中检查)将显示“false”作为内容。

javascript:void(0)&amp;&amp; javascript:;
IE将在iframe中显示“无法显示网页”错误。此外,将src从有效网址设置为javascript:void(0)时,页面也不会显示为空白。

about:blank
适用于所有浏览器,但IE 9向服务器发送路径为“null”的请求。仍然是IMO最好的选择

结帐http://jsfiddle.net/eybDj/1
结帐http://jsfiddle.net/sv_in/gRU3V/以查看iframe src如何使用JS

进行动态更新

答案 5 :(得分:1)

javascript:false适用于现代浏览器。

我看到的是,当哑巴蜘蛛试图将javascript:false作为页面加载时,这只会“失败”。

解决方案:阻止愚蠢的蜘蛛。

答案 6 :(得分:1)

正如我在此问题中发布的那样:Is an empty iframe src valid?,完全省略src=属性似乎是可以接受的。

答案 7 :(得分:0)

IMO:如果您没有放置src,您的页面将无法验证。但是关于它。 如果你输入src =“”,你的服务器将记录许多404错误。

在“破坏性”中没有什么是真正的错误。但是,使用iframe本身并没有错吗?

° -

答案 8 :(得分:0)

是的,我知道我正在恢复一个旧线程。起诉我。我对答案感兴趣。

我不明白为什么将触发器作为表单提交会阻止动态创建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>

答案 9 :(得分:0)

我遇到了这一行代码:

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

也是。我想删除javascript:URL

在Web超文本应用程序技术工作组中找到此注释[2019年10月2日更新]

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

  

iframe或frame元素的其他步骤如下:

     

如果元素未指定src属性,或者其值为   空字符串,以url为网址“ about:blank”。