我正在查看一些网站代码以供审核,并注意到<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>
我可以找到任何资源来解释这是什么 - 有谁知道上面做了什么呢?
非常感谢
答案 0 :(得分:1)
这些是自定义属性(可能是动态服务器端代码)添加到<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 + ')');
}
*/
}
});
答案 1 :(得分:0)
根据XML Namespaces,site
只是一个名称空间前缀:
在XML隐含的数据模型中,XML文档包含一个树 元素。每个元素都有一个元素类型名称(有时称为 标签名称)和一组属性;每个属性都包含一个名称 和一个价值。应用程序通常使用元素类型名称 和元素的属性决定如何处理 元件。在没有名称空间的XML 1.0中,元素类型名称和 属性名称是使用受限制的一组非结构化字符串 字符,类似于编程语言中的标识符。我会打电话 这些名称是本地名称。这在分布式中是有问题的 像Web这样的环境。一个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命名空间on Wikipedia。
答案 2 :(得分:0)
属性名称中的冒号表示它 - 它几乎肯定与XML命名空间有关。
如果您查看HTML页面的顶部,您应该注意到以下几点:
首先,它应该有一个doctype,将其标识为XHTML。
其次,它应该具有site
命名空间的XML命名空间标识符(xmlns)。这将确定这是什么。
可以将您喜欢的任何属性添加到HTML元素中。它是非标准的,在某些情况下你可能会发现浏览器不喜欢它 - 例如,如果你的doctype是XHTML,浏览器应该强制你只使用允许的标准属性。
将XML命名空间用于其他属性是解决此限制的常用方法。事实上,在XHTML中,这是你应该做的。
将来,随着越来越多的网站迁移到HTML5并远离XHTML,您应该会看到更少的内容。 HTML5通过回归自由形式和放松的自定义属性态度来消除所有这些。 HTML5规范说您可以在元素中使用您喜欢的任何属性。如果您打算使用自定义属性,那么您应该在它们前面添加data-
,这有助于将它们与真实属性区分开来,但您不必再担心命名空间了。