25

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

我看到的答案是:

  • about:blank
  • javascript:false
  • javascript:void(0)
  • javascript:"";
  • 指向空白页面的 url

有明确的赢家吗?如果不是,那么权衡是什么?

从 IE6 开始,我不想在所有浏览器中出现 HTTPS url 的混合内容警告,也没有任何后退按钮、历史记录或重新加载怪异。

4

10 回答 10

10

不确定是否所有浏览器都支持“about:blank”,所以我会选择你自己的空白页面。

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

于 2010-11-26T10:52:59.463 回答
7

创建“空”iframe(例如,作为 iframe shim)时的标准方法是将 src 设置为javascript:false;. 这是大多数为您创建 iframe shim 的 JavaScript 库(例如 YUI 的 Overlay)所使用的方法。

于 2010-11-26T10:55:17.753 回答
6

关于什么

about:blank
于 2010-11-26T10:54:05.593 回答
6

重新发表评论,澄清您打算使用 iframe 作为表单提交的目标:

我会在服务器上使用一个空文档来发送一个204 no content.

它避免了

  • IE 和 HTTPS 模式下的“混合内容”警告
  • 不必要的错误,因为客户端不理解javascript:协议
  • 和其他异国情调的恶作剧。

它也是有效的 HTML。

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

于 2010-11-26T11:01:13.347 回答
3

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

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/以查看 iframe src 在使用 JS 进行动态更新时如何变化

于 2013-08-21T06:25:20.900 回答
1

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

我所看到的是,只有当愚蠢的蜘蛛尝试javascript:false作为页面加载时,这才会“失败”。

解决方案:阻止哑蜘蛛。

于 2011-09-04T14:52:47.037 回答
1

正如我在这个问题中发布的那样:空的 iframe src 有效吗?src=,完全省略该属性看起来是可以接受的。

于 2012-01-11T17:24:49.197 回答
0

IMO:如果您不放置 src,您的页面将无法验证。但就是这样。如果您输入 src="",您的服务器将记录许多 404 错误。

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

°-

于 2010-11-26T10:52:43.940 回答
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>
于 2011-03-03T18:39:38.477 回答
0

我遇到了这行代码:

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

也是。我想删除javascript:URL.

从 Web 超文本应用技术工作组找到此说明 [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 为 URL “about:blank”。

于 2019-10-02T21:59:26.807 回答