Ich habe ein iframe in einem HTML5-Dokument. Wenn ich validiere, erhalte ich eine Fehlermeldung, die besagt, dass das Attribut in iframe frameBorder
veraltet ist, und dass stattdessen CSS verwendet wird.
Ich habe dieses AttributframeBorder="0"
hier, weil es die einzige Möglichkeit war, herauszufinden, wie ich die Grenze in IE loswerden kann. Ich habe border:none;
in CSS ohne Glück versucht. Gibt es eine konforme Möglichkeit, dies zu beheben?
Vielen Dank.
HTML 5 unterstützt keine Attribute wie Frameborder, Bildlauf, Randbreite und Randhöhe (die in HTML 4.01 unterstützt wurden). Stattdessen wurde in der HTML 5-Spezifikation das Seamless-Attribut eingeführt. Mit dem Seamless-Attribut wird der Inline-Frame so angezeigt, als würde er als Teil des enthaltenen Dokuments gerendert. Beispielsweise werden Rahmen und Bildlaufleisten nicht angezeigt.
frameborder
Veraltet seit HTML5Der Wert
1
(der Standardwert) zeichnet einen Rahmen um diesen Rahmen. Der Wert0
entfernt den Rahmen um diesen Rahmen, Sie sollten jedoch stattdessen den CSS-Eigenschaftsrahmen verwenden, um den Rahmen zu steuern.
Wie das obige Zitat besagt, 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 frameborder="0"
nicht verwendet. Sogar 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 in Kürze verfügbar ist. So haben Sie 3 Möglichkeiten:
frameborder
, nur um sicherzugehen, dass es (für den Moment) funktioniert.Zum vorherigen Stand dieser jahrzehntealten Antwort:
Das seamless
-Attribut wird seit so kurzer 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.
Wie im anderen Posting here ist es die beste Lösung, den CSS-Eintrag von zu verwenden
style="border:0;"
Da das frameBorder
-Attribut nur für den IE erforderlich ist, gibt es eine andere Möglichkeit, den Validator zu umgehen. Dies ist eine einfache Methode, die kein Javascript oder DOM-Manipulation erfordert.
<!--[if IE]>
<iframe src="source" frameBorder="0">?</iframe>
<![endif]-->
<!--[if !IE]>-->
<iframe src="source" style="border:none">?</iframe>
<!-- <![endif]-->
Das funktioniert
iframe{
border-width: 0px;
}
Wie wäre es mit der gleichen Technik für das "Täuschen" des Validators mit Javascript, indem ein Zielattribut in XHTML <a onclick="this.target='_blank'">
eingefügt wird?
<iframe onload = " this.frameborder='0' " src="menu.html" id="menu"> </iframe>
Oder getElementsByTagName]("iframe")
1 dieses Attribut für alle Iframes auf der Seite hinzufügen?
Ich habe das nicht getestet, weil ich etwas getan habe, was bedeutet, dass nothing in IE weniger als 9! :) arbeitet. :)
Ich habe eine nette Arbeit gefunden, mit der es in IE7 hier funktionieren kann. Es umgeht den Validator für das frameBorder-Attribut, behält jedoch css für zukünftige Browser bei, wie im Beitrag beschrieben.