HTML5和frameborder

JD *_*cks 71 css html5 internet-explorer

我在HTML5文档上有一个iframe.当我验证时,我收到一个错误,告诉我该属性iframe frameBorder已过时并使用CSS代替.

我在frameBorder="0"这里有这个属性,因为这是我弄清楚如何摆脱IE中的边界的唯一方法,我border:none;在CSS中尝试没有运气.是否有合规的方法来解决这个问题?

谢谢.

csh*_*ore 46

按照另一张贴在这里,最好的解决办法是使用的CSS入门

style="border:0;"
Run Code Online (Sandbox Code Playgroud)

  • 我认为他们建议:`border-width:0px` TBH.`border:none;`不起作用. (6认同)
  • @ cnotethegr8 - 它在IE和Opera(当前版本)中不起作用,尚未在Chrome,Safari和/或Firefox中测试过.我测试了糟糕的浏览器,因为如果它在它们中工作,那么它几乎肯定会在其他浏览器中工作. (5认同)
  • @SolomonClosson`我测试了糟糕的浏览器,因为如果它在它们中运行,那么几乎肯定会在其他浏览器中工作.我的上帝那个天真.如果你想确保你的应用程序在浏览器中工作,你必须在*浏览器中进行测试,简单明了.没有保证,只有怪癖. (2认同)

Sot*_*ris 41

HTML 5不支持frameborder,scrolling,marginwidth和marginheight等属性(HTML 4.01支持这些属性).相反,HTML 5规范引入了无缝属性.无缝属性允许内联框架显示为呈现为包含文档的一部分.例如,不会出现边框和滚动条.

据MDN称

frameborder 自HTML5以来已过时

该值1(默认值)在此框架周围绘制边框.该值0将删除此框架周围的边框,但您应该使用CSS属性边框来控制边框.

就像上面引用的那样,你应该用CSS删除边框;
内联(style="border: none;")或样式表(iframe { border: none; }).

话虽这么说,似乎没有一个iframe提供者不使用frameborder="0".即使YouTube仍然使用该属性,甚至不提供样式属性,以使iframe向后兼容,因为不再支持frameborder.可以肯定地说,该属性不会很快发生.这为您提供了3个选项:

  1. 继续使用frameborder,只是为了确保它有效(现在)
  2. 使用CSS,做"正确"的事情
  3. 使用两者.虽然这不能解决不兼容问题(就像选项1一样),但它确实可以在每个已经存在过的浏览器中运行


至于这个十年前答案的前一状态:

seamless属性已经支持这么短的时间(或者某些浏览器根本不支持),MDN甚至没有将其列为不推荐使用的功能.不要使用它,不要被下面的评论搞糊涂.

  • 那么有没有办法在CSS中生成frameBorder = 0? (30认同)
  • 你应该使用`border-width:0px;`,但我担心这不是跨浏览器兼容的'iframes`.所有浏览器仍然不支持`seamless`!这是您必须接受的少数HTML5问题之一.使用`frameborder ="0"`和地狱验证! (8认同)
  • `seamless` 在功能上不等同于 `frameBorder=0`。例如,包含页面的 CSS 可以级联到“iframe”本身,并且链接在子页面的上下文中打开。 (2认同)
  • `seamless`已从HTML5规范中删除,因此永远不会支持它.[@ ForTheWatch的答案](http://stackoverflow.com/a/10831379/1079573)现在是最好的. (2认同)

Mr *_*ter 16

由于该frameBorder属性仅对IE是必需的,因此还有另一种绕过验证器的方法.这是一种不需要Javascript或任何DOM操作的轻量级方法.

<!--[if IE]>
   <iframe src="source" frameBorder="0">?</iframe>
<![endif]-->
<!--[if !IE]>-->
   <iframe src="source" style="border:none">?</iframe>
<!-- <![endif]-->
Run Code Online (Sandbox Code Playgroud)

  • 这是问题的最佳答案.但是,符合HTML5的*目标*(正在进行中并且可能并且将在不另行通知的情况下进行更改)是没有用的,特别是当它使您使用的技巧不能达到除此类合规之外的任何其他目的并且使代码成为可能时更复杂.如果你不想在内联框架周围有边框,最好继续使用`frameBorder ="0"`. (3认同)

Har*_*osh 6

这有效

iframe{
    border-width: 0px;
}
Run Code Online (Sandbox Code Playgroud)