1

次のデータがバックエンド(データベースを想定)から取得されたローカライズされたページの1つにaddthisを介してgoogle plus oneボタンを実装している間、奇妙な問題に直面していますが、plusボタンが読み込まれていません。私たちはajaxベースの部分的なポストバック

次のhtmlは、部分的なポストバック中にのみページに追加されます

<div class="addthis_toolbox addthis_default_style" style="float:right;">
   <a class="addthis_button_google_plusone" g:plusone:size="small"></a>
</div>

同時に、スクリプトは

ScriptManager.RegisterStartupScript(Page, typeof(string),
                                    "RegisterHTMLScript" + scriptID,
                                     scriptstring,
                                     false); 

scriptstringの値は

<script type="text/javascript">
     var addthis_config = {"data_track_clickback":true};
     if (window.addthis) {
        addthis.toolbox('.addthis_toolbox'); 
        addthis.init(); 
     }
     else {
       $.getScript('http://s7.addthis.com/js/250/addthis_widget.js#username=XXXXX&domready=1'); 
       $.getScript('https://apis.google.com/js/plusone.js'); 
     }
 </script>

クライアントエラーを確認できませんが、同時に+1ボタンが表示されません。何が間違っている可能性がありますか?

RegisterStartupScriptの代わりに、1。ScriptReferenceを現在のスクリプトマネージャーにプログラムで追加してみました。2.スクリプトマネージャーのRegisterClientScriptIncludeメソッド。

しかし、ほぼ同じ結果です。

4

1 に答える 1

1

ほら、

部分的なポストバック中、ASP.NET AJAX は、ダウンロードされる依存スクリプトのリストを認識して、すべてのスクリプトがダウンロードされたら「ドキュメントの準備ができました」とアナウンスできるようにする必要があります。ASP.NET 3.5 以下では、"notifyscriptloaded" を追加することが、依存するスクリプト リソースをロードする必要があることを ASP.NET が認識する唯一の手段です (部分的なポストバック中に)。

notifyscriptloaded でスクリプトを登録すると、ASP.NET はスクリプトがダウンロードされるまで待機し、これをダウンロードした後にのみドキュメントの準備ができていることを確認します。このようにして、スクリプトの準備が整ったドキュメントが期待どおりに起動されるようにします。注: ASP.NET 4.0 ではこれは必要ありません (ただし、ASP.NET 4.0 でどのように行われるかはわかりません)。

したがって、今の問題は非常に明確です。外部のサード パーティの JavaScript ファイルを参照として使用する場合、ASP.NET では、静的なページ ヘッダー (またはマスター ページ) からのみ参照するように制限されています。部分的なポストバック中にスクリプトをダウンロードする方法はありません-サードパーティのスクリプトを制御し、「notifyscriptloaded」を追加しない限り。

解決策として、この外部サードパーティ スクリプトをページ ヘッダーの静的参照にする必要がありました。とにかく、複数のページに +1 ボタンのインスタンスがいくつかあったため、これは私を傷つけませんでした。

于 2011-10-10T13:16:16.493 に答える