HTML 5 nie obsługuje atrybutów, takich jak frameborder, scrolling, marginwidth i marginheight (które były obsługiwane w HTML 4.01). Zamiast tego specyfikacja HTML 5 wprowadziła atrybut seamless. Atrybut seamless sprawia, że ramka wbudowana wygląda tak, jakby była renderowana jako część dokumentu zawierającego. Na przykład nie pojawią się obramowania i paski przewijania.
Według MDN
frameborder
Przestarzałe od HTML5
Wartość 1
(domyślna) rysuje obramowanie wokół tej ramki. Wartość 0
usuwa obramowanie wokół tej ramki, ale zamiast tego powinieneś używać obramowania właściwości CSS do kontrolowania granic.
Jak mówi powyższy cytat, powinieneś usunąć obramowanie za pomocą CSS;
albo inline ( style="border: none;"
) albo w twoim arkuszu stylów ( iframe { border: none; }
).
Biorąc to pod uwagę, wydaje się, że nie ma ani jednego dostawcy iframe, który by nie używał frameborder="0"
. Nawet YouTube nadal używa tego atrybutu, a nawet nie zapewnia atrybutu stylu, który sprawiłby, że ramki iframe byłyby wstecznie zgodne, gdy ramka ramki nie są już obsługiwane. Można śmiało powiedzieć, że atrybut nigdzie się nie zmieni. To pozostawia Ci 3 opcje:
- Używaj dalej
frameborder
, aby mieć pewność, że działa (na razie)
- Użyj CSS, aby zrobić „właściwą” rzecz
- Używać obu. Chociaż nie rozwiązuje to problemu niekompatybilności (podobnie jak opcja 1), działa i będzie działać w każdej przeglądarce, która była i będzie
Jeśli chodzi o poprzedni stan tej sprzed dziesięciu lat odpowiedzi:
seamless
Atrybut został wsparty na tak krótkim czasie (lub w ogóle przez niektórych przeglądarkach), że nawet nie MDN listy jako przestarzała funkcja. Nie używaj go i nie daj się zmylić poniższymi komentarzami.
border-width: 0px;
, ale obawiam się, że nie jest to kompatybilne z różnymi przeglądarkamiiframes
.seamless
nadal nie jest obsługiwany przez wszystkie przeglądarki! To jeden z nielicznych problemów HTML5, które musisz po prostu zaakceptować. Użyjframeborder="0"
i do diabła z walidacją!seamless
został usunięty ze specyfikacji HTML5, więc nigdy nie będzie dla niego obsługiwany. Odpowiedź @ ForTheWatch jest teraz najlepsza.Podobnie jak w przypadku innych postów tutaj , najlepszym rozwiązaniem jest użycie wpisu CSS
style="border:0;"
źródło
border-width: 0px
TBH.border: none;
nie będzie działać.I test for the crappy browsers, because if it works in them, than it is almost sure to work in the others.
Mój Boże, ten naiwny. Jeśli chcesz mieć pewność, że Twoja aplikacja działa w przeglądarce, musisz przetestować ją w tej przeglądarce, prosto i prosto. Nie ma żadnych gwarancji, tylko dziwactwa.seamless
gdy zostało usunięte ze specyfikacji, jest to jedyna poprawna odpowiedźPonieważ
frameborder
atrybut jest potrzebny tylko w IE, istnieje inny sposób obejścia walidatora. Jest to lekki sposób, który nie wymaga Javascript ani żadnej manipulacji DOM.<!--[if IE]> <iframe src="source" frameborder="0">?</iframe> <![endif]--> <!--[if !IE]>--> <iframe src="source" style="border:none">?</iframe> <!-- <![endif]-->
źródło
frameBorder="0"
jeśli nie chcesz, aby obramowanie wokół ramki wbudowanej.frame
iframeset
nieiframe
. Atrybut jest przestarzały wiframe
elemencie; patrz w3.org/TR/html5/obsolete.html#attr-iframe-frameborderTo działa
iframe{ border-width: 0px; }
źródło
A co powiesz na użycie tego samego dla techniki „oszukiwania” walidatora za pomocą JavaScript poprzez umieszczenie atrybutu target w XHTML
<a onclick="this.target='_blank'">
?<iframe onload = " this.frameborder='0' " src="menu.html" id="menu"> </iframe>
Czy
getElementsByTagName]("iframe")
1 dodajesz ten atrybut do wszystkich ramek iframe na stronie?Nie testowałem tego, ponieważ zrobiłem coś, co oznacza, że nic nie działa w IE mniej niż 9! :) Więc kiedy ja to rozwiązuję ... :)
źródło
Znalazłem fajną pracę, która pozwoli mu działać w IE7 tutaj . Pomija walidator dla atrybutu frameBorder, ale zachowuje css dla przyszłych przeglądarek, jak wyjaśniono w poście.
źródło
seamless
atrybutu.style="border:none; scrolling:no; frameborder:0; marginheight:0; marginwidth:0; "
źródło