Google плюс одна кнопка не видна при загрузке при частичной обратной передаче asp.net - PullRequest
1 голос
/ 30 сентября 2011

При реализации google plus одной кнопки через addthis на одной из наших локализованных страниц, где следующие данные были получены из бэкэнда (предположим, из базы данных), перед лицом странной проблемы, кнопка плюс не загружается.мы частичная обратная передача на основе 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); 

Значение строки скрипта:

<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 метод в диспетчере сценариев.

Но почти тот же результат.

1 Ответ

1 голос
/ 10 октября 2011

Вот так,

Во время частичной обратной передачи ASP.NET AJAX необходимо знать список зависимых сценариев, которые необходимо загрузить, чтобы он мог объявить «ДОКУМЕНТ ГОТОВ» после того, как все они загружены. В ASP.NET 3.5 и ниже добавление «notifyscriptloaded» является единственным способом для ASP.NET знать, что ресурс зависимого скрипта должен быть загружен - во время частичной обратной передачи.

Когда вы регистрируете скрипт в notifyscriptloaded, ASP.NET ожидает загрузки скрипта и гарантирует, что документ будет готов только после его загрузки. Таким образом, он гарантирует, что документ, готовый из скрипта, будет запущен, как и ожидалось. ПРИМЕЧАНИЕ: ASP.NET 4.0 НЕ нуждается в этом (однако я не уверен, как это делается в нем).

Так что проблема сейчас очень ясна. При использовании внешнего стороннего файла javascript в качестве ссылки ASP.NET ограничивает нас ссылками на него только из статического заголовка страницы (или главной страницы). Невозможно загрузить сценарий во время частичной обратной передачи - если только вы не контролируете сценарий сторонней организации и не добавляете в него «notifyscriptloaded».

Решение, мне пришлось сделать этот внешний сторонний скрипт статической ссылкой в ​​заголовке страницы. Это не повредило мне, потому что у меня в любом случае было несколько экземпляров кнопки +1 на нескольких страницах.

...