Что мешает мне использовать произвольные теги в HTML? - PullRequest
9 голосов
/ 29 августа 2010

Даже новых тегов HTML5 недостаточно для описания структур без возврата к div с.Что мешает мне изменить:

<div class="post">
    <div class="userinfo">
        <span class="name">Casey</span>
        <img class="avatar" src="..." />
    </div>
    <div class="body">
        <p>blah blah blah</p>
        <p>blah blah blah</p>
        <p>blah blah blah</p>
    </div>
</div>

на что-то вроде:

<post>
    <userinfo>
        <name>Casey</name>
        <img class="avatar" src="..." />
    </userinfo>
    <pbody>
        <p>blah blah blah</p>
        <p>blah blah blah</p>
        <p>blah blah blah</p>
    </pbody>
</post>

Для меня второй пример намного чище.Что-нибудь (например, поддержка браузера) мешает мне сделать это?

(я понимаю, что это, по сути, XML, но в этом случае возникает вопрос: «Как выглядит поддержка браузера?»).рендеринг веб-страниц XML? ")

Ответы [ 6 ]

6 голосов
/ 29 августа 2010

Одна из причин заключается в том, что Internet Explorer (и более ранние версии Firefox) не имеют запасного варианта для тегов, которые не определены, и в конечном итоге игнорирует их как для стилизации, так и для вложения. Без shiv ваш сайт ужасно сломается в этих браузерах.

4 голосов
/ 29 августа 2010

Вы можете использовать свои собственные теги, но проблема в том, что, поскольку они не являются стандартными, браузеры не будут знать, что они могут иметь совпадающие закрывающие теги.И, конечно же, документ не будет проверен как правильный HTML / X-HTML.

<blah>
    This is some <span>test</span> test text with another <bogus>tag</bogus> tag
    within, which ends with a fake self-closing <tag />
</blah>

Браузеры увидят <blah>, а не теперь, как с этим обращаться, и будут воспринимать его как «ничто».и игнорировать это.Затем они с радостью разберутся к следующему фрагменту и увидят какой-нибудь простой текст с допустимым интервалом внутри.В конце концов они достигнут уровня </blah> и тоже его проигнорируют.

Вот почему Javascript и CSS должны были поддерживать открывающую последовательность комментариев HTML как часть соответствующих определений языка:

<script type="text/javascript">
<!--  // <--actually a part of the javascript spec, treated as a comment.
     alert('hey!');
//-->
</script>

Когда Javascript был впервые представлен, было еще МНОГИЕ другие браузеры, которые совершенно не знали о Javascript, и поэтому они игнорировали теги и с радостью выводили ваш код Javascript.То же самое для CSS.

Если вам действительно нужны пользовательские теги, вы можете создать документ в формате XML со своим собственным DTD и использовать XSLT для преобразования его в действительный документ HTML / X-HTML.

1 голос
/ 22 марта 2012

getElementsByTagName подводит меня с пользовательскими тегами.Например,

<acme:mytag id="mytag">
    <div id ="x">x</div>
    <div id ="y">y</div>
    <div id ="z">z</div>
</acme:mytag>

Это не работает с IE8 (режим Quirks или Стандартный режим)

var mytag = document.getElementById('mytag'); // it's found
var mydivs = mytag.getElementsByTagName ('div'); // but this is always 0

Если ваш html-тег не читает

<html XMLNS:acme>
...
</html>
1 голос
/ 29 августа 2010

Какова цель выбранных вами тегов? Если ваша цель - представить информацию, тогда использование div и других структур, ориентированных на представление, - это замечательно. Ваши теги выглядят так, как будто они пытаются описать реальные данные. Если это так, то XML с XSLT преобразуется на стороне сервера для вывода HTML для разметки презентации. Помните, что браузер - это просто движок рендеринга, и он использует спецификацию HTML в качестве образца того, что визуализировать для данного сайта. Браузеру не нужно понимать информацию, такую ​​как «post» или «userInfo», потому что у него нет контекста для понимания того, что делать с точки зрения рендеринга с этой информацией. CSS может помочь браузеру понять, что вы хотите сделать визуально, но сначала спросите себя, какова цель вашей разметки таким образом, чтобы хранить ваши данные (в стиле XML) или представлять их. Если представить его, то вам следует придерживаться стандартов, если вы хотите продолжать использовать браузер в качестве движка рендеринга. Удачи, было бы здорово, если бы мы все могли определить наши схемы презентаций, забавная идея!

1 голос
/ 29 августа 2010

Большинство браузеров будут воспринимать теги как произвольные (например, как старые браузеры обрабатывают теги HTML5).Ничто не мешает вам использовать ваши собственные теги, но это не совсем приемлемый способ кодирования HTML.HTML должен использовать предопределенные теги.

Если вы заинтересованы в кодировании с произвольными тегами, вы можете просто пойти с XML.Вы можете отформатировать XML с помощью XSLT (используется аналогично таблицам стилей, но гораздо более мощно).Посмотрите здесь: http://www.w3schools.com/xml/xml_xsl.asp

0 голосов
/ 29 августа 2010

Проблема в том, что он не будет проверяться, а новые теги будут просто игнорироваться.

...