2009-08-11 79 views
1

我试图将FB xmlns属性动态添加到文档的<html>标记(<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">)。出于某种原因,下面添加它不起作用:Javascript:将属性动态添加到<html />标记

htmltag = document.getElementsByTagName ('html'); 
htmltag[0].setAttribute("xmlns:fb","http://www.facebook.com/2008/fbml");"); 

我该怎么办?

谢谢!

更新:没有jQuery或其他库可用。

+2

谁应该阅读该属性? XML解析器不解释JavaScript。 – Gumbo 2009-08-11 19:00:08

+0

静态执行此操作。 – 2009-08-11 20:35:10

回答

3

这可能不是你想要的答案:)

使用客户端代码处理语义标记并不好pr actice。它隐藏了大多数机器的宝贵机器可读信息。 HTML在JavaScript执行时已经被抓取,解析和显示。一美元短,一天晚!

如果您可以在服务器上添加属性,然后再将其发送到浏览器,请参阅。

如果你有做客户端;不要被像jQuery之类的框架诱惑。这对于一项小任务来说是一笔巨大的开销。

*非科学测试

0

要获得参考< HTML/>元素使用

document.documentElement 
+3

如果是HTML文档,它与Nir写的相同:'document.getElementsByTagName('html')[0] === document.documentElement'的计算结果为* true *。 – Gumbo 2009-08-11 19:06:13

+0

你是对的。真正的问题是动态地添加一个名称空间,这在网页上下文中似乎没什么意义。 – pawel 2009-08-11 19:43:41

3

这可以非常快速地使用jQuery来完成。

包括:

(或指向本地jQuery库)

和下面的代码:

<script type="text/javascript"> 
$(document).ready(function() { 
    $("html").attr("xmlns:fb", "http://www.facebook.com/2008/fbml"); 
}); </script> 
+0

在这种情况下无法使用jQuery。 – Nir 2009-08-11 19:08:48

3

heh其实,在做了我上面提到的jQuery解决方案之后;

我意识到这可能与一个JavaScript行完成简单:

document.documentElement.setAttribute("xmlns:fb", "http://www.facebook.com/2008/fbml"); 

记住...如果您查看浏览器的源代码,你将看不到属性附加,因为它编程在页面加载后添加它。在firefox中使用Firebug,或者是让你看到源代码在飞行中被操纵的东西,你应该很乐意去。

+0

只需编辑您以前的答案。 – Gumbo 2009-08-11 19:11:08

相关问题