2009-08-11 13 views
1

J'essaie d'ajouter dynamiquement l'attribut FB xmlns à la balise <html> du document (<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">). Pour une raison quelconque, l'ajouter comme ci-dessous ne fonctionne pas:Javascript: Ajout dynamique d'attribut à la balise <html />

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

Comment puis-je le faire?

Merci!

Mise à jour: Aucune bibliothèque jquery ou autre n'est disponible.

+2

Qui devrait lire cet attribut? Les analyseurs XML n'interprètent pas JavaScript. – Gumbo

+0

Faites-le de façon statique. –

Répondre

3

Ceci est probablement pas la réponse que vous vouloir :)

Le balisage sur le balisage sémantique avec le code côté client n'est pas bon actice. Il cache les précieuses informations lisibles par machine sur la plupart des machines. Le HTML est déjà récupéré, analysé et affiché au moment où Javascript s'exécute *. Un dollar court et un jour de retard!

Si vous pouvez ajouter les attributs sur le serveur, avant qu'il ne soit envoyé au navigateur, allez-y. Si vous avez pour le faire côté client; ne soyez pas tenté par un framework comme jQuery ou quoi que ce soit. C'est un énorme frais généraux pour une petite tâche.

* tests non scientifiques

0

Pour obtenir référence au < élément html/> utiliser

document.documentElement 
+3

Dans le cas d'un document HTML, c'est la même chose que ce que Nir a écrit: 'document.getElementsByTagName ('html') [0] === document.documentElement' évalue à * vrai *. – Gumbo

+0

Vous avez absolument raison. Le vrai problème est d'ajouter un espace de noms de façon dynamique, ce qui semble peu logique dans le contexte d'une page Web. – pawel

3

Cela peut se faire très rapidement avec jquery.

Inclure:

(ou point à une bibliothèque jquery locale)

et voici le code:

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

Impossible d'utiliser jQuery dans ce cas. – Nir

3

Heh fait, après avoir fait la solution jquery je l'ai dit ci-dessus;

Je réalise qu'il pourrait être fait plus facile avec une seule ligne javascript:

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

Gardez à l'esprit ... Si vous affichez la source avec le navigateur, vous ne verrez pas l'attribut attaché, comme il programatically l'ajoute après le chargement de la page. Utilisez Firebug dans firefox, ou quelque chose qui vous permet de voir la source manipulée à la volée, et vous devriez être prêt à partir.

+0

Il suffit de modifier votre réponse précédente. – Gumbo

Questions connexes