大多数浏览器都支持标签,例如
<fb:like ... > </fb:like>
(这是一个 Facebook XFBML 标签)。实际上是namespace:tagname
命名标签标准的一部分吗?
另外,CSS支持怎么样?我很少像这样直接设计它
fb:like { font-size: 11px }
但是对于有经验的人来说,它是否适用于大多数现代浏览器?(IE 6 也是?)是否有任何情况下它不起作用甚至浏览器崩溃?可能一些移动浏览器并没有很好地处理这个问题。
浏览器对命名空间:标签名形式的标签的处理在 IE 中与其他浏览器非常不同,并且绝对不是标准化的。但是,在您的特定情况下,元素的样式似乎非常简单。利用:
fb\:like { font-size: 11px }
在 IE6、IE7、Firefox 3.6 和 Chrome 10 中测试和工作。
实际上是
namespace:tagname
命名标签标准的一部分吗?
是的。namespace:type
语法在XML 1.0语法中定义,因此被 XHTML 和 XFBML 等语言采用。
另外,CSS支持怎么样?
CSS3 选择器的命名空间操作符在本规范|
中定义。
举个简单的例子,人们可能会这样设计它:
@namespace fb url(http://www.facebook.com/2008/fbml);
fb|like { font-size: 11px; }
:
表示伪类(和 CSS2 中的伪元素),显然fb:like
不是。
请注意,这在 IE < 9 中不起作用,它不能识别 XML 序列化页面,因此不会在 CSS 中实现命名空间。如果您想要更好的浏览器支持,您可以将:
其视为元素名称的一部分并fb\:like
用作选择器,正如 Alohci 所说。
大多数页面不支持 fb:like 标签...它们需要一个 iframe,该 iframe 从 Facebook 加载支持页面,其中包含所需的元标签、命名空间等来理解它...
...或者他们要求开发人员包含这些元标记以及必要的 xfbml 链接,以使他们的页面解析此命名空间。
命名空间很好,并且对 ML 解析有意义。所有 HTML 都是具有命名空间的真正 ML。Facebook 希望你包含他们的命名空间。但是,他们知道您可能不太愿意,因此请您改为包含 javascript 来解决这些“命名空间”问题并仅解析相应的标签。感谢 Facebook 解决此问题。
现在您对这些标签的样式感兴趣。大多数浏览器将未知名称空间视为“显示:内联”。您可以对其应用“样式属性”,但它们不会被识别。您要么必须遵循 Facebook 的规则来设置这些 fb:like 标签的样式(即他们的 javascript 愿意将其解析为可接受的属性 - 您可以在此处找到)。最好的事情是什么?或者使用“div”包装这个 fb:like 并设置 div 的样式以用于定位,或者使用 Facebook 为他们的 javascript-parsing ML 定义的属性。
浏览器将来会支持 Facebook 命名空间吗?好吧,考虑到 HTML5 最终被识别需要多长时间,可能不会。Facebook 将创建自己的浏览器(谁知道呢,甚至 Google 在 6 次迭代 / 2 年内创建了 Chrome,如果不是出于各种其他原因,它在渗透率方面甚至可以与 IE6 / 7 相媲美)。
或者在未来的浏览器中,Facebook 可能会被认为是一个非常有价值的命名空间...... 值得怀疑,但嘿,考虑到 FB / TW 是随处使用的图标(包括星际争霸 2!)。所以你知道...有希望。
与此同时,在他们的系统内工作。
虽然这是一篇旧文章,但我认为值得注意的是该<namespace:tagname>
模式是 Facebook 在其 XHP 扩展中使用的东西。XHP 是 Facebook 自己的 PHP 扩展,它使 PHP 能够将 XML 节点解释为 PHP 对象,本质上是将 XML 节点转换为简单的 HTML 节点。
我们自己的<fb:like>
标签可能仍然由 javascript 处理,但我猜 XHP 正在 API 末端的某个地方使用。
像这样的标签只存在于 XFBML 框架中(即您需要包含 Facebook JavaScript 库才能使它们工作)
您要求的方式没有CSS支持。
fb:like { font-size: 11px }
上面的 CSS 代码不起作用。但是您可以通过标准方式将 CSS 类分配给该标签。