0

fbのようなボタンとfbの送信ボタンをWebページに追加しようとしています。javascriptを使用してIEのHTMLタグにxmlnsタグを追加する。 FB Likeボタン/ Sendボタンがレンダリングされない

ソースのhtmlタグを変更してfbnameスペースを追加することはできません。代わりに、クライアントサイドJSを使用して同じものを追加します。

var htmlRoot = jQuery(jQuery("html").get(0)); 
    if(typeof(htmlRoot.attr("xmlns:fb")) == "undefined") { 
     htmlRoot.attr("xmlns:fb",'http://www.facebook.com/2008/fbml'); 
     htmlRoot.attr("xmlns:og",'http://opengraphprotocol.org/schema/'); 
     if (typeof(console) != 'undefined' && console) { 
      console.log("FB NameSpace added"); 
     } 

    } 

FB.XFBML.parse関数は、名前空間が追加された後にのみ呼び出されます。解析関数が呼び出される直前に名前空間を取得すると、html名前空間が変更されていることがわかります。 IEを除くすべてのブラウザでうまく動作します。 IEは変更された名前空間を尊重しません。名前空間の値をログに記録しても、FBNameのスペースが含まれていることが示されていても、同様のボタンはレンダリングされません。どんな仕事?

+0

このhttp://stackoverflow.com/questions/1262285/javascript-adding-attribute-dynamically-to-the-html-tagはあなたにとって興味深いかもしれません。 – Niklas

+0

@Niklasそれを通って..しかし、解決策を得るのを助けなかった。 – Sharad

答えて

0

は$(ドキュメント).ready()関数にこれを入れないでください)

+0

私はブラウザに関係なく名前空間を追加しています。修正された名前空間はIEによって尊重されていないため、それがすべての問題の原因です。 – Sharad

0
if(document.namespaces) { 
    //IE 
    document.namespaces.add("fb", "http://ogp.me/ns#"); 
    document.namespaces.add("og", "http://ogp.me/ns/fb#"); 

    if (typeof(console) != 'undefined' && console) { 
      console.log("IE: OG and FB NameSpace added"); 
     } 
} else { 
    //Other Browsers 
    var htmlRoot = jQuery(jQuery("html").get(0)); 
    if(typeof(htmlRoot.attr("xmlns:fb")) == "undefined") { 
     htmlRoot.attr("xmlns:og",'http://ogp.me/ns#'); 
     htmlRoot.attr("xmlns:fb",'http://ogp.me/ns/fb#'); 
     if (typeof(console) != 'undefined' && console) { 
      console.log("OG and FB NameSpace added"); 
     } 
    } 
} 

をIE用(document.namespaces.add呼び出す条件付きコードを追加します!

関連する問題