2009-08-11 36 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または他のlibは利用できません。

+2

誰がその属性を読みますか? XMLパーサーはJavaScriptを解釈しません。 – Gumbo

+0

静的に行います。 –

答えて

3

これはおそらく、あなたが望んでいる答えではありません:)

クライアントサイドのコードでセマンティックマークアップをタップするのは良くありませんpr actice。ほとんどのマシンから貴重な情報を隠すことができます。 HTMLはすでにJavascriptが実行されるときにフェッチされ、解析され、表示されます*。短い1ドルと1日遅れて!

サーバーに属性を追加できる場合は、ブラウザに送信する前に属性を追加してください。

にはがあります。 jQueryなどのフレームワークに誘惑されてはいけません。それは小さな仕事のための大きなオーバーヘッドです。

*非科学的なテスト

実際
0

<のhtml/>要素への参照は、これはjQueryを使って非常に迅速に行うことができます

document.documentElement 
+3

HTML文書の場合、Nirが書いたものと同じです。 'document.getElementsByTagName( 'html')[0] === document.documentElement'は* true *と評価されます。 – Gumbo

+0

あなたは絶対に正しいです。実際の問題は、名前空間を動的に追加することであり、Webページのコンテキストではほとんど意味をなさないと思われます。 – pawel

3

を使用し取得します。

を含める:

(ローカルjQueryライブラリまたはポイント)

、ここではコードです:

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

この場合、jQueryは使用できません。 – Nir

3

ふむ、私は上記のjqueryのソリューションを行った後、

私はそれは、単一のJavaScriptの行で簡単に行うことができる実現:プログラム的にそれのように、あなたがブラウザでソースを表示する場合は、属性が付加表示されません...覚えておいてください

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

ページが読み込まれた後に追加します。 Firebugをfirefoxで使用するか、ソースをオンザフライで操作するのを見ることができるものを使用してください。

+0

前の回答を編集するだけです。 – Gumbo

関連する問題