我在HTML5文档上有一个iframe。验证时,我收到一条错误消息,告诉我上的属性iframe frameBorder
已过时,请改用CSS。
我在frameBorder="0"
这里具有此属性,因为这是我能弄清楚如何摆脱IE中边界的唯一方法,我border:none;
在CSS中尝试了运气不好。是否有兼容的方法来解决此问题?
谢谢。
Answers:
HTML 5不支持诸如frameborder,scrolling,marginwidth和marginheight之类的属性(HTML 4.01支持这些属性)。相反,HTML 5规范引入了Seamless属性。Seamless属性使嵌入式框架看起来像是作为包含文档的一部分呈现的一样。例如,边框和滚动条将不会出现。
frameborder
自HTML5以来已过时该值
1
(默认值)在此框架周围绘制边框。该值0
将删除此框架周围的边框,但是您应该改用CSS属性border来控制边框。
就像上面的引言所说,您应该使用CSS删除边框;
内联(style="border: none;"
)或样式表(iframe { border: none; }
)中。
话虽如此,似乎没有一个不使用的iframe提供程序frameborder="0"
。甚至YouTube仍使用该属性,甚至不提供样式属性来使iframe向后兼容,因为不再支持frameborder。可以肯定地说该属性不会很快消失。这给您留下3个选择:
frameborder
,以确保它可以正常使用(目前)至于这个已有十年历史的答案的先前状态:
在seamless
很短的时间内就支持该属性(某些浏览器甚至根本不支持),因此MDN甚至没有将其列为不推荐使用的功能。不要使用它,也不要被下面的评论所迷惑。
border-width: 0px;
,但恐怕这也不能与跨浏览器兼容iframes
。 seamless
仍然不是所有浏览器都支持!这是您仅需接受的少数HTML5问题之一。使用frameborder="0"
并进行验证!
seamless
已从HTML5规范中删除,因此将不再支持它。@ForTheWatch的答案现在是最好的。
根据此处的其他文章,最好的解决方案是使用CSS条目
style="border:0;"
border-width: 0px
TBH。 border: none;
不管用。
I test for the crappy browsers, because if it works in them, than it is almost sure to work in the others.
天哪,我的天哪。如果要确保您的应用程序可在浏览器中运行,则必须在该浏览器中进行简单而简单的测试。没有保证,只有怪癖。
seamless
已从规格中删除,这是唯一正确的答案
由于该frameborder
属性仅对于IE才是必需的,因此还有另一种解决验证器的方法。这是一种轻量级的方式,不需要Javascript或任何DOM操作。
<!--[if IE]>
<iframe src="source" frameborder="0">?</iframe>
<![endif]-->
<!--[if !IE]>-->
<iframe src="source" style="border:none">?</iframe>
<!-- <![endif]-->
frameBorder="0"
如果您不希望在线框周围有边框,最好继续使用。
frame
和frameset
,不是iframe
。该属性在元素上已过时iframe
;参见w3.org/TR/html5/obsolete.html#attr-iframe-frameborder
通过在XHTML中粘贴目标属性,如何使用相同的技术来“欺骗”带有Javascript的验证器<a onclick="this.target='_blank'">
?
<iframe onload = " this.frameborder='0' " src="menu.html" id="menu"> </iframe>
还是getElementsByTagName]("iframe")
1为页面上的所有iframe添加此属性?
还没有测试过,因为我做了一些事情,这意味着在IE 9中没有任何东西可以正常工作!:)因此,当我在整理... :)
style="border:none; scrolling:no; frameborder:0; marginheight:0; marginwidth:0; "