HTML 5 не поддерживает такие атрибуты, как рамка кадра, прокрутка, ширина полей и высота полей (которые поддерживались в HTML 4.01). Вместо этого в спецификации HTML 5 был введен атрибут seamless. Атрибут seamless позволяет встроенному фрейму выглядеть так, как если бы он отображался как часть содержащего документа. Например, не будут отображаться границы и полосы прокрутки.
По данным MDN
frameborder
Устарело с HTML5
Значение 1
(по умолчанию) рисует рамку вокруг этого кадра. Значение 0
удаляет границу вокруг этого кадра, но вместо этого вы должны использовать границу свойства CSS для управления границами.
Как сказано в приведенной выше цитате, вы должны удалить границу с помощью CSS;
либо inline ( style="border: none;"
), либо в вашей таблице стилей ( iframe { border: none; }
).
При этом, похоже, не существует ни одного поставщика iframe, который бы не использовал frameborder="0"
. Даже YouTube по-прежнему использует этот атрибут и даже не предоставляет атрибут стиля, чтобы сделать фреймы обратно совместимыми, когда рамка фреймов больше не поддерживается. Можно с уверенностью сказать, что атрибут в ближайшее время никуда не денется. Это оставляет вам 3 варианта:
- Продолжайте использовать
frameborder
, просто чтобы убедиться, что он работает (пока)
- Используйте CSS, чтобы делать "правильные" вещи
- Используйте оба. Хотя это не решает проблему несовместимости (как и вариант 1), оно работает и будет работать в каждом браузере, который был и будет
Что касается предыдущего состояния этого ответа десятилетней давности:
seamless
Атрибут был поддержан за такой короткий промежуток времени (или вообще некоторыми браузерами), что MDN даже не перечислить его как устаревшие функции. Не используйте его и не запутайтесь в комментариях ниже.
border-width: 0px;
, но я боюсь, что это несовместимо с кроссбраузерностью для использования сiframes
.seamless
по-прежнему поддерживается не всеми браузерами! Это одна из тех немногих проблем HTML5, с которыми вам просто нужно принять. Пользуюсьframeborder="0"
и хрен с валидацией!seamless
был удален из спецификации HTML5, поэтому он никогда не будет поддерживаться. Ответ @ ForTheWatch теперь лучший.Согласно другой публикации здесь , лучшим решением является использование CSS-записи
style="border:0;"
источник
border-width: 0px
ТБХ.border: none;
не будет работать.I test for the crappy browsers, because if it works in them, than it is almost sure to work in the others.
Боже, как наивно. Если вы хотите убедиться, что ваше приложение работает в браузере, вы должны протестировать его в этом браузере, просто и просто. Никаких гарантий, только причуды.seamless
когда это исключено из спецификации, это единственный правильный ответПоскольку
frameborder
атрибут необходим только для IE, есть другой способ обойти валидатор. Это легкий способ, который не требует Javascript или каких-либо манипуляций с DOM.<!--[if IE]> <iframe src="source" frameborder="0">?</iframe> <![endif]--> <!--[if !IE]>--> <iframe src="source" style="border:none">?</iframe> <!-- <![endif]-->
источник
frameBorder="0"
если вам не нужна рамка вокруг встроенного фрейма.frame
аframeset
неiframe
. Атрибут является устаревшим наiframe
элементе; см. w3.org/TR/html5/obsolete.html#attr-iframe-frameborderЭто работает
iframe{ border-width: 0px; }
источник
Как насчет того же метода для «обмана» валидатора с помощью Javascript, вставив целевой атрибут в XHTML
<a onclick="this.target='_blank'">
?<iframe onload = " this.frameborder='0' " src="menu.html" id="menu"> </iframe>
Или
getElementsByTagName]("iframe")
1 добавить этот атрибут для всех фреймов на странице?Не тестировал это, потому что я сделал кое-что, что означает, что в IE меньше 9 ничего не работает! :) Так что пока разбираюсь ... :)
источник
Я нашел хорошую работа вокруг , что позволит его работать в IE7 здесь . Он обходит валидатор для атрибута frameBorder, но сохраняет css для будущих браузеров, как описано в сообщении.
источник
seamless
вместо этого использовать атрибут.style="border:none; scrolling:no; frameborder:0; marginheight:0; marginwidth:0; "
источник