HTML5和frameborder

时间:2010-08-30 14:30:03

标签: css internet-explorer html5

我在HTML5文档上有一个iframe。当我验证时,我收到一个错误,告诉我iframe frameBorder上的属性已过时,而是使用CSS。

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

感谢。

7 个答案:

答案 0 :(得分:45)

根据其他帖子here,最佳解决方案是使用

的CSS条目
style="border:0;"

答案 1 :(得分:38)

  

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

According to MDN

  

frameborder HTML5以后已过时

     

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

与上面引用的内容类似,删除CSS边框;内联(style="border: none;")或样式表(iframe { border: none; })。< / p>

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

  1. 继续使用frameborder,以确保其有效(暂时)
  2. 使用CSS来做“正确”的事情
  3. 同时使用两者。虽然这不能解决不兼容问题(就像选项1一样),但它确实可以在已经存在并将会出现的每个浏览器中工作

  4. 至于这个十年前答案的先前状态:

    seamless属性已经支持这么短的时间(或者某些浏览器根本不支持),MDN甚至没有将其列为不推荐使用的功能。不要使用它,也不要对下面的评论感到困惑。

答案 2 :(得分:16)

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

<!--[if IE]>
   <iframe src="source" frameBorder="0">?</iframe>
<![endif]-->
<!--[if !IE]>-->
   <iframe src="source" style="border:none">?</iframe>
<!-- <![endif]-->

答案 3 :(得分:6)

这有效

iframe{
    border-width: 0px;
}

答案 4 :(得分:2)

如何通过在XHTML <a onclick="this.target='_blank'">中粘贴目标属性来使用Javascript“愚弄”验证器的技术呢?

  • onsomething =“this.frameborder ='0'”

<iframe onload = " this.frameborder='0' " src="menu.html" id="menu"> </iframe>

getElementsByTagName]("iframe") 1为页面上的所有iframe添加此属性?

没有测试过这个,因为我已经做了一些事情,这意味着没有在IE中工作的次数少于9! :) 所以,虽然我正在排序......:)

答案 5 :(得分:0)

我找到了一个很好的工作,可以让它在IE7 here中工作。它绕过了frameBorder属性的验证器,但保留了未来浏览器的css,如帖子中所述。

答案 6 :(得分:-5)

style="border:none; scrolling:no; frameborder:0;  marginheight:0; marginwidth:0; "