5

私が開発しているサイトにいくつかのウィジェットがあり、それらをすべて JavaScript ファイルから非同期にロードするので、DOM が終了するのを妨げません。

たとえば、Digg ウィジェットと Buzz ウィジェットでこれを行ったところ、問題なく動作しました。

// 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 ウィジェットに関しては、同じロジックは機能しません。

// PlusOne Share
function plusOneShare() {
    $jQ.getScript('http://apis.google.com/js/plusone.js');
    $jQ('.sharebox').append('<div class="widget"><div class="g-plusone" data-size="tall" data-count="true"></div></div>');
}

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>

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

PS また、plusOneShare 関数内の 1 行目と 2 行目を切り替えてみましたが、どちらも機能しませんでした。

ありがとう!

4

7 に答える 7

2

http://code.google.com/intl/pt-BR/apis/+1button/#plusonetag-parametersに示されているように

を使用して明示的なロードを行うことができます

$(document).ready(function() { gapi.plusone.go('content'); });
于 2011-08-07T09:16:14.050 に答える
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>
于 2011-06-02T17:26:06.900 に答える
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>
于 2011-12-01T04:18:46.940 に答える
1

getScript (または任意の非同期読み込みメソッド) を使用すると、サポートされていないブラウザーで空白のページが表示されます。plusone.js は、iphone/ipad/android などでページ全体を置き換えます。

getScript で「parsetags: "explicit"」を使用できるようにするためのソリューションも探しています。

于 2011-06-03T01:30:18.080 に答える
1

さて、私はこれについてもいくつか調査しました - そして私は $.getScript が大好きです - (不気味な方法ではなく、すべてのページの最初の表示を高速化するためです)。Twitter、Facebook、Plusone、OpenX などへの参照を含む Web サイトを作成したことがある場合は、私が何を話しているかおわかりでしょう :)

とにかく、私が最近理解したのは、「plusone.js」を非同期でロードし(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>

これが誰にも役立つことを願っています:)

于 2011-08-27T13:46:33.663 に答える
1

私の質問で説明した方法は完全に機能します。私が正しければ、Google 側に何らかのバグがあっただけです。彼らが発表してからわずか数時間後に機能を動作させようとしていました. 約2日後、完全に機能するようになりました。

この.getScriptメソッドは、AJAX 経由で +1 をロードするのに適した方法です。

于 2011-06-04T16:28:06.020 に答える