Когда мы хотим открыть ссылку в новом окне, обычно мы добавляем target="_blank" после ссылки. Нет проблем, когда мы используем переходный DOCTYPE (xh tml1-transitional. dtd), но когда мы используем. строгий DOCTYPE (xhtml1-strict.dtd), этот метод не пройдет проверку W3C, и появится следующее сообщение об ошибке:
«для этого элемента нет целевого атрибута (в этой версии HTML)»
Оказывается, что в соответствии со строгим DOCTYPE HTML4.01/XHTML1.0/XHTML1.1, target="_blank", target="_self" и другие синтаксисы недействительны, и мы можем реализовать их только через JavaScript.
Друг спросил, почему нельзя использовать target="_blank"? Этот атрибут очень удобен. Ха-ха, я не знаю, что думают эксперты W3C. Насколько я знаю, речь в основном идет о «простоте использования и дружелюбии», потому что иностранцы считают невежливым открывать новое окно без согласия пользователя или четких подсказок. из. Независимо от того, разумна эта отмена или нет, давайте посмотрим на решение.
атрибут rel
В HTML4.0 добавлен новый атрибут: rel. Этот атрибут используется для описания связи между ссылкой и страницей, содержащей ссылку, а также целью ссылки. rel имеет множество значений атрибутов, таких как следующий, предыдущий, глава, раздел и т. д. Мы хотим использовать атрибут rel="externa l". Исходный код был написан так:
<a href="document.html" target="_blank"> Открыть новое окно</a>
Теперь будет написано так:
<a href="document.html" rel="external">Открыть в новом окне</a>
Это строгий метод. Конечно, для эффективности его необходимо сочетать с JavaScript.
Полный код JS javascript выглядит следующим образом:
функция внешние ссылки() {
if (!document.getElementsByTagName) return;
var якоря = document.getElementsByTagName("a");
for (var i=0; i<anchors.length; i++) {
вар якорь = якоря [я];
если (anchor.getAttribute("href") &&
якорь.getAttribute("rel") == "внешний")
anchor.target = "_blank";
}
}
window.onload = внешние ссылки;
Вы можете сохранить его как файл .js (например, external.js) и вызывать его с помощью метода внешнего подключения:
<script type="text/javascript" src="external.js"></script>
Вот и все.
Наконец, я хотел бы добавить, что target="new", используемый моим веб-сайтом, разрешен в переходном DOCTYPE, но не соответствует строгому стандарту. В следующей версии я буду использовать строгий режим и изменю все значения target="new" на rel="external".