Подтвердить что ты не робот

XHTML Strict 1.0 - target = "_ blank" недействителен?

Я только что подтвердил свой фактический документ XHTML Strict 1.0 с помощью службы валидатора w3c.. и он говорит, что

<ul id="socialnetwork">
            <li><a href="#" onclick="location.href='http://www.twitter.com'; return false;" target="_blank"></a></li>
            <li><a href="#" onclick="location.href='http://www.flickr.com'; return false;" target="_blank"></a></li>
            <li><a href="#" onclick="location.href='http://www.xing.com'; return false;" target="_blank"></a></li>
            <li><a href="#" onclick="location.href='http://www.rss.com'; return false;" target="_blank"></a></li>
</ul>

target = "_ blank" недействителен. но мне нужен пуст цели, поэтому в браузере откроется новая вкладка, так что пользователь не покинет главную страницу.

Что я могу сделать? Почему это недействительно?

4b9b3361

Ответ 1

Возможно, вы захотите проверить часто задаваемые вопросы W3: http://www.w3.org/MarkUp/2004/xhtml-faq#target

Почему атрибут target удален из XHTML 1.1?

Это не так. XHTML 1.0 выпускается в трех версиях: строгий, переходный и фреймовый. Все три из них были намеренно сохранены как можно ближе к HTML 4.01, как это позволял бы XML. XHTML 1.1 - это обновленная версия XHTML 1.0 strict, и ни одна версия HTML strict никогда не включала целевой атрибут. Остальные две версии, переходные и frameset, не обновлялись, потому что ничего не обновлялось. Если вы хотите использовать целевой атрибут, используйте переход XHTML 1.0.

Ответ 2

Вопрос, который вы должны задать себе, - это не то, как "обойти" ограничение Strict, но почему вы хотите использовать XHTML Strict 1.0 в первую очередь?

В вашем случае я бы просто использовал Transitional как DTD. Если, конечно, вы не разрабатываете определенную операционную систему, которая, например, не позволяет открывать несколько окон, например, в автомобильных системах, мобильном телефоне или более экзотических устройствах. Что, кстати, причина, по которой цель отсутствует в HTML Strict.

Но, как вы, кажется, разрабатываете для "нормального" использования, тип вашего документа должен отражать это, и вы должны использовать:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

См. также почему цель была удалена из xhtml приветствия J

Ответ 3

Я предлагаю не добавлять в целевой атрибут. Он был отключен из-за причин доступности, и мне это не нравится, когда страница решает, как мои теги браузера открываются. Конечно, вы можете сделать это, если хотите. Я покажу вам метод JavaScript, о котором упоминал Дарин, который позволяет проверить как XHTML 1.0 Strict или XHTML 1.1:

Код HTML:

<!-- Added link titles for better testing purposes -->
<ul id="socialnetwork">
    <li><a href="http://www.twitter.com/" class="targetblank">Twitter</a></li>
    <li><a href="http://www.flickr.com/" class="targetblank">Flickr</a></li>
    <li><a href="http://www.xing.com/" class="targetblank">XING</a></li>
    <li><a href="http://www.rss.com/" class="targetblank">RSS</a></li>
</ul>

Код JavaScript:

window.onload = function() {
    // Code if document.getElementByClassName() doesn't exist
    if (document.getElementsByClassName == undefined) {
        document.getElementsByClassName = function(className) {
            var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)");
            var allElements = document.getElementsByTagName("*");
            var results = [];

            var element;
            for (var i = 0; (element = allElements[i]) != null; i++) {
                var elementClass = element.className;
                if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass))
                    results.push(element);
            }

            return results;
        }
    }

    var anchorList = document.getElementsByClassName('targetblank');
    for (var i in anchorList) {
        anchorList[i].target = '_blank';
    }
}

Конечно, вы можете опустить window.onload, если вы уже включили его в другое место, но я рекомендую использовать его (или используя другую функцию загрузки, такую ​​как JQuery $(document).ready();), поэтому загрузка JavaScript выполняется, когда страница заканчивает загрузку. Теперь все, что вам нужно сделать, это дать каждой привязке ссылку класса "targetblank", и ссылки должны открыться на новой вкладке.

Ответ 4

В этой ситуации я использую простое решение jQuery, которое проверяет его с помощью XHTML Strict и разрешает появление новых окон.

<a href="http://www.example.com" class="linkExternal">Example URL</a>

<script type="text/javascript">
$(function(){
    $('a.linkExternal').on('click',function(e){
        e.preventDefault();
        window.open($(this).attr('href'));
    });
});

Ответ 5

Хотя я не могу сказать, почему этот атрибут считается недействительным в качестве обходного пути, вы можете добавить этот атрибут с помощью javascript, если вы хотите, чтобы ваш сайт проверялся как XHTML Strict.

Ответ 6

Попробуйте следующее:

<a href="#" onclick="window.open('urlgoeshere');">Link</a>

Ответ 7

Лучший способ использовать цель в XHTML STRICT: onclick="target='_blank';"

<a href="http://botje.tnhteam.com/" onclick="target='_blank';">Botje is overal</a>

Пример: нажмите кнопку STRICT внизу

если вам нужно _self или любая другая цель, вы можете изменить _blank на себя, например: onclick="target='_self';"

Я надеюсь, что этот ответ поможет некоторым из вас...

Ответ 8

Я предпочитаю это

<a href="#" onclick="location.href='http://myurl.com'; return false;" onclick="this.target='_blank'">Anchor text</a>