2011-06-01 4 views
5

私は開発中のサイトにウィジェットをいくつか持っていて、DOMを終了しないようにjavascriptファイルからすべて非同期に読み込みます。例えば問題Google +1ウィジェットを非同期でロードしています

、私はDiggやバズウィジェットでこれを行うと、それが正常に動作します:

// Buzz Share 
function buzzShare() { 
    $jQ('.sharebox').append('<div class="widget"><a title="Post to Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" data-button-style="normal-count"></a></div>'); 
    $jQ.getScript('http://www.google.com/buzz/api/button.js'); 
} 
// Digg Share 
function diggShare() { 
    $jQ('.sharebox').append('<div class="widget"><a class="DiggThisButton DiggMedium"></a></div>'); 
    $jQ.getScript('http://widgets.digg.com/buttons.js'); 
} 

それが新しいGoogle +1ウィジェットになると、同じロジックが動作しません:

HTML5タグと<g:plusone></g:plusone>の両方を使用してみました。どちらもうまくいきません。ここで

だけで、打ち上げサービスのドキュメントです:http://code.google.com/apis/+1button/

私はまた、HTMLに直接スクリプトを埋め込む場合は、次の操作を行うことができます気づきました。

<script type="text/javascript" src="https://apis.google.com/js/plusone.js"> 
     {"parsetags": "explicit"} 
    </script> 

jQueryの.getScript{"parsetags": "explicit"}パラメータを使用する方法はありますか?

P.S.私はplusOneShare関数内の第1行と第2行の切り替えも試みましたが、どちらも機能しませんでした。

ありがとうございます!

答えて

1

方法私は私の質問で完全に動作すると述べた。私が正しいとすれば、Googleの終わりには何らかのバグがあっただけです。彼らはそれを発表してわずか数時間働いて機能を得ることを試みていました。約2日後、今は完全に動作します。

.getScriptの方法は、AJAX経由で+1を読み込むのに適しています。

+0

どのようにパラメータを渡すかについての言葉ですか?私は{"lang": "es-419"}を渡そうとしていますが、まだどのように見つけられませんでした。 – Danita

+0

手がかりがありません。私は幸運にも、デフォルト設定が私が望むものだったからだ。私はそれを解決するかどうかを知らせます。 –

+1

私は考え出した。下の私の答えを見てください。 – Danita

2

どのブラウザが使用していますか?以下のフルページの例では、私の作品:

<html> 
    <head> 
    <title>jQuery Dynamic load test</title> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
     $.getScript('https://apis.google.com/js/plusone.js'); 
     $('.sharebox').append('<div class="widget"><div class="g-plusone" data-size="tall" data-count="true"></div></div>'); 
     }); 
    </script> 
    </head> 
    <body> 
    Hello world! 
    <div class="sharebox"></div> 
    </body> 
</html> 
+0

私のコードは1日か2日後に完全に動作するようになりました。私は思考を変えていない、実際には私は試してあきらめて、このスレッドの後にそのまま残しておきます。私はGoogleがその間に+1の変更をまだ進めていたと思う。結局のところ、サービス全体はわずか数日前です。 –

1

あなたがgetScript(または任意の非同期ロード法)を使用する場合は、サポートされていないブラウザに空白のページで終わります。 plusone.js使用できるようにする

は私も解決策を探しています。.. iphone/ipadの/アンドロイドなどであなたのページ全体を置き換え.. getScriptと「parsetagsを 『明示的な』」

+1

OK、明らかにgoogleが問題を解決しました。 – levent

2

私は1スクリプトに渡すパラメータをサポートするために、このようなことをやってしまった:

var hd = document.getElementsByTagName('head')[0]; 
var scr = document.createElement('script'); 
scr.type ='text/javascript'; 
scr.async = true; 
scr.innerHTML = "{lang: 'es-419'}"; // Magic! :) 
scr.src = "https://apis.google.com/js/plusone.js"; 
hd.appendChild(scr); 
2

ようにあなたが

$(document).ready(function() { gapi.plusone.go('content'); }); 
1
を使用してexplicid負荷を行うことができます http://code.google.com/intl/pt-BR/apis/+1button/#plusonetag-parameters

に示しました。

私はこれについていくつかの研究をしました - そして、私は$ .getScriptを愛しています。(これは不気味な方法ではありませんが、私の全ページの最初の表示を速めるためですs)。 Twitter、Facebook、Plusone、OpenXなどへの参照を含むWebサイトを構築したことがあるなら、あなたは私が何を話しているかを知っているでしょう:)

とにかく、最近私が考えたのは、 "plusone.js" asyncをロードすることができます(jQuery $を使用)。getScript)と同時に、特定の言語を使用するように指示する。

<script type="text/javascript"> 
    window.___gcfg = { lang: 'sv-SE' }; 
    $(document).ready(function() { 
    $.getScript("https://apis.google.com/js/plusone.js"); 
    }); 
</script> 

<body> 
    <g:plusone size="medium"></g:plusone> 
</body> 

希望これは誰:)

+0

ありがとうございます。これは素晴らしい解決策です。 – kushin

2

に非同期読み込みのための別の解決に役立ちます。私にとって完璧に動作します。特に、PHPを使用していて、言語を動的に割り当てる必要がある場合は特に役に立ちます。

<script type="text/javascript"> 
    window.___gcfg = { 
<? if ($lang!= 'en'){ ?> 
    lang: '<?=$lang?>', 
<? } ?> 
    parsetags: 'explicit', 
    annotation: 'inline', 
    size: 'medium' 
    }; 
    $(document).ready(function() { 
     $.getScript('https://apis.google.com/js/plusone.js',function(){ 
      gapi.plusone.render("plusone-div"); 
     }); 
    }); 
</script> 
関連する問題