HTML 5 unterstützt keine Attribute wie Frameborder, Scrolling, Marginwidth und Marginheight (die in HTML 4.01 unterstützt wurden). Stattdessen hat die HTML 5-Spezifikation das nahtlose Attribut eingeführt. Mit dem nahtlosen Attribut kann der Inline-Rahmen so angezeigt werden, als würde er als Teil des enthaltenen Dokuments gerendert. Beispielsweise werden Rahmen und Bildlaufleisten nicht angezeigt.
Laut MDN
frameborder
Veraltet seit HTML5
Der Wert 1
(Standard) zeichnet einen Rahmen um diesen Rahmen. Der Wert 0
entfernt den Rahmen um diesen Rahmen. Sie sollten jedoch stattdessen den Rand der CSS-Eigenschaft verwenden, um die Rahmen zu steuern.
Wie im obigen Zitat angegeben, sollten Sie den Rand mit CSS entfernen.
entweder inline ( style="border: none;"
) oder in Ihrem Stylesheet ( iframe { border: none; }
).
Davon abgesehen scheint es keinen einzigen Iframe-Anbieter zu geben, der diesen nicht verwendet frameborder="0"
. Selbst YouTube verwendet das Attribut weiterhin und bietet nicht einmal ein Stilattribut, um iframes abwärtskompatibel zu machen, wenn Frameborder nicht mehr unterstützt wird. Man kann mit Sicherheit sagen, dass das Attribut nicht bald irgendwohin geht. Damit haben Sie 3 Möglichkeiten:
- Verwenden Sie weiter
frameborder
, nur um sicherzugehen, dass es funktioniert (vorerst)
- Verwenden Sie CSS, um das "Richtige" zu tun
- Verwende beide. Obwohl dies das Inkompatibilitätsproblem nicht löst (genau wie Option 1), funktioniert es in jedem Browser, der es war und sein wird
Was den vorherigen Stand dieser zehn Jahre alten Antwort betrifft:
Das seamless
Attribut wurde für eine so kurze Zeit (oder von einigen Browsern überhaupt nicht) unterstützt, dass MDN es nicht einmal als veraltete Funktion auflistet. Verwenden Sie es nicht und lassen Sie sich von den Kommentaren unten nicht verwirren.
border-width: 0px;
, aber ich befürchte, dass dies auch nicht browserübergreifend kompatibel istiframes
.seamless
wird immer noch nicht von allen Browsern unterstützt! Dies ist eines der wenigen HTML5-Probleme, die Sie nur akzeptieren müssen. Verwenden Sieframeborder="0"
und zum Teufel mit der Validierung!seamless
wurde aus der HTML5-Spezifikation entfernt, daher wird dies niemals unterstützt. Die Antwort von @ ForTheWatch ist jetzt die beste.Wie im anderen Beitrag hier ist die beste Lösung die Verwendung des CSS-Eintrags von
style="border:0;"
quelle
border-width: 0px
TBH.border: none;
wird nicht funktionieren.I test for the crappy browsers, because if it works in them, than it is almost sure to work in the others.
Mein Gott, der naiv ist. Wenn Sie sicherstellen möchten, dass Ihre App in einem Browser funktioniert, müssen Sie in diesem Browser schlicht und einfach testen . Es gibt keine Garantien, nur Macken.seamless
das wurde aus der SpezifikationDa das
frameborder
Attribut nur für den Internet Explorer erforderlich ist, gibt es eine andere Möglichkeit, den Validator zu umgehen. Dies ist eine einfache Methode, die weder Javascript noch DOM-Manipulationen erfordert.<!--[if IE]> <iframe src="source" frameborder="0">?</iframe> <![endif]--> <!--[if !IE]>--> <iframe src="source" style="border:none">?</iframe> <!-- <![endif]-->
quelle
frameBorder="0"
Sie diese Option am besten weiter, wenn Sie keinen Rahmen um einen Inline-Frame möchten.frame
undframeset
nichtiframe
. Das Attribut ist für dasiframe
Element veraltet . siehe w3.org/TR/html5/obsolete.html#attr-iframe-frameborderDas funktioniert
iframe{ border-width: 0px; }
quelle
Wie wäre es, wenn Sie dieselbe Technik verwenden, um den Validator mit Javascript zu "täuschen", indem Sie ein Zielattribut in XHTML einfügen
<a onclick="this.target='_blank'">
?<iframe onload = " this.frameborder='0' " src="menu.html" id="menu"> </iframe>
Oder
getElementsByTagName]("iframe")
1 Hinzufügen dieses Attributs für alle Iframes auf der Seite?Habe das nicht getestet, weil ich etwas getan habe, was bedeutet, dass im IE weniger als 9 nichts funktioniert! :) Also, während ich das kläre ... :)
quelle
Ich habe eine schöne Lösung gefunden, mit der es hier in IE7 funktionieren kann . Es umgeht den Validator für das Attribut frameBorder, behält jedoch CSS für zukünftige Browser bei, wie im Beitrag erläutert.
quelle
seamless
stattdessen ein Attribut zu verwenden.style="border:none; scrolling:no; frameborder:0; marginheight:0; marginwidth:0; "
quelle