Атрибут элемента сайта - что это? - PullRequest
1 голос
/ 23 января 2011

Я просматриваю некоторый код сайта для проверки и заметил, что атрибут "site" используется в <ul>, например:

<li site:bluray="154" site:ds="91" site:dvd="345" site:pc="77" site:ps3="248" site:psp="49" site:wii="153" site:xbox360="216" ><a href="#">In Stock</a></li>

Я не могу найти какие-либо ресурсы, чтобы объяснить, что это такое - кто-нибудь знает, что на самом деле делает вышеуказанное?

Большое спасибо

Ответы [ 3 ]

1 голос
/ 23 января 2011

Это пользовательские атрибуты, добавленные (возможно, динамическим кодом на стороне сервера) к элементам <li>.

Сам по себе ничего не делает, это то же самое, что name или id для элементов - некоторые данные, которые могут использоваться или не использоваться каким-либо другим кодом.

Можно предположить, что на веб-сайте есть некоторый клиентский скрипт, который идентифицирует щелчок по вложенномусоздайте ссылку внутри элемента списка, извлеките данные из элемента элемента списка и создайте правильный URL-адрес или отправьте соответствующий запрос AJAX на сервер или все, что он делает с данными.

Просмотр сценария на стороне клиента приведет кдать вам больше шансов понять реальную цель этих атрибутов.:)

Редактировать: в вашем случае файл JS http://media1.shopto.net/scripts/site.js использует эти атрибуты для создания href ссылок на лету, вот соответствующий блок кода из этого файла:

// The current href on each link needs to have the platform pre-pended.
                    // So store the current href before we change it.
                    link.submenu.getElements('ul.category a').each(function(sublink) {
                        var count = sublink.getParent().get('site:'+platform.replace('%20',''));

                        if( count==null && !sublink.getParent().get('site:all') )
                        {
                            sublink.getParent().removeChild(sublink);
                        } else {
                            sublink.set('href', href + sublink.get('href').replace('#',''));

/*
                            if( count!=null )
                            {
                                sublink.set('text',sublink.get('text') + ' (' + count + ')');
                            }
*/
                        }
                    });
0 голосов
/ 23 января 2011

Двоеточие в имени атрибута выдает его - оно почти наверняка связано с пространством имен XML.

Если вы посмотрите на верхнюю часть HTML-страницы, вы должны заметить пару вещей:

Во-первых, он должен иметь тип документа, идентифицирующий его как XHTML.

Во-вторых, он должен иметь идентификатор пространства имен XML (xmlns) для пространства имен site. Это наверняка подтвердит, что это то, что есть.

Можно добавить любой атрибут, который вам нравится, в элемент HTML. Это нестандартно, и в некоторых случаях вы можете обнаружить, что браузеру это не нравится - например, если ваш тип документа XHTML, браузер должен принудительно использовать только разрешенные стандартные атрибуты.

Использование пространства имен XML для дополнительных атрибутов является обычным способом обойти это ограничение. На самом деле, в XHTML это то, что вы должны делать.

В будущем вы должны будете видеть это меньше по мере того, как все больше сайтов переходят на HTML5 и уходят из XHTML. HTML5 устраняет все это, возвращаясь к более свободной форме и непринужденному отношению к пользовательским атрибутам. Спецификация HTML5 говорит, что вы можете использовать любой атрибут, который вам нравится в ваших элементах. Если вы намереваетесь использовать пользовательские атрибуты, вам следует добавить к ним префикс data-, что помогает отличать их от реальных атрибутов, но вам больше не нужно беспокоиться о пространствах имен.

0 голосов
/ 23 января 2011

site - это просто префикс пространства имен согласно пространствам имен XML :

В модели данных, подразумеваемой XML, документ XML содержит дерево элементов.Каждый элемент имеет имя типа элемента (иногда называемое именем тега) и набор атрибутов;каждый атрибут состоит из имени и значения.Приложения обычно используют имя типа элемента и атрибуты элемента при определении способа обработки элемента.В XML 1.0 без пространств имен имена типов элементов и имен атрибутов являются неструктурированными строками, использующими ограниченный набор символов, аналогично идентификаторам в языках программирования.Я буду называть эти имена местными именами.Это проблематично в распределенной среде, такой как Интернет.Один XML-документ может использовать элементы part для описания частей книг, другой может использовать элементы part для описания частей автомобилей.Приложение XML не может знать, как обрабатывать элемент детали, если у него нет какой-либо дополнительной информации, внешней по отношению к документу.

Рекомендация по пространствам имен XML пытается улучшить эту ситуацию, расширяя модель данных, чтобы разрешить имена типов элементов.и имена атрибутов, которые должны быть квалифицированы с помощью URI.Таким образом, документ, описывающий части автомобилей, может использовать part с указанием одного URI;и документ, описывающий части книг, может использовать part с указанием другого URI.Я назову комбинацию локального имени и соответствующего URI универсальным именем.Роль URI в универсальном имени заключается в том, чтобы позволить приложениям распознавать имя.Нет никаких гарантий относительно ресурса, идентифицированного URI.Рекомендация пространств имен XML не требует, чтобы имена типов элементов и имен атрибутов были универсальными именами;им также разрешено быть локальными именами.

Так что <cars:part xmlns:cars="http://www.cars.com/xml"/> отображается на

<{http://www.cars.com/xml}part/>

Использование cars (или site) в качестве префикса простодля удобства.А поскольку псевдоатрибут xmlns: является наследуемым, его не нужно включать в элемент, если предок уже определил префикс.

Подробнее о пространствах имен XML в Википедии .

...