Почему мой гаджет Google не отображается правильно? - PullRequest
1 голос
/ 09 июля 2011

Я создаю гаджет, который отображает панель известных кнопок: Facebook, Tweet, Google Plus и LinkedIn Share.

При вставке гаджета HTML в редактор здесь вы увидите, что он отображается нормально.

То, что делает мой гаджет-код, в основном загружает содержимое HTML и помещает его в элемент div следующим образом:

<Content type="html">
<![CDATA[
<div id="content_div"></div>
<script type="text/javascript">

function displayButtons (){ 
      var params = {};
      params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT;
      var url = "http://hosting.gmodules.com/ig/gadgets/file/109164222302601753554/share_bar.html";
      gadgets.io.makeRequest(url, adjust, params);
    }

    function adjust(obj){
      document.getElementById('content_div').innerHTML = obj.text;
    }

    gadgets.util.registerOnLoadHandler(displayButtons);
</script>
]]>
</Content>

Когда я тестирую его в iGoogle или на Сайтах Google, я получаю только текстовую гиперссылку Tweet.

Может ли кто-нибудь помочь мне разобраться в чем дело, пожалуйста?

1 Ответ

0 голосов
/ 18 июля 2011

Я получаю ошибку рендеринга XML, когда помещаю адрес содержимого, которое вы пытаетесь включить в браузер, как в Firefox, так и в Chrome. В IE9 страница просто пуста.

Хром может иметь лучший совет:

Эта страница содержит следующие ошибки:

ошибка в строке 5 в столбце 28: префикс пространства имен g для plusone не является определено

ошибка в строке 18 в столбце 54: префикс пространства имен fb на подобном есть не определено

Ниже приведено отображение страницы до первой ошибки.

Tweet

Итак, сначала посмотрите файл share_bar.html.

EDIT Содержимое, которое вы пытаетесь вставить, содержит несколько тегов SCRIPT. Похоже, что браузеры сталкиваются с проблемой внедрения сценария, которое вы пытаетесь выполнить, устанавливая свойство innerHTML вашего элемента.

Решение, которое сработало для меня после того, как я протестировал его в комбинированной среде тестирования Shindig / Partuza (которая близка к iGoogle и другим контейнерам OpenSocial), заключалось в использовании jQuery для вставки.

Таким образом, я сначала загрузил jquery lib вверху раздела содержимого модуля следующим образом:

<Content type="html">
<![CDATA[
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"> </script>
<div id="content_div"></div>
...

И затем вместо манипулирования свойством innerHTML я вызвал полезный метод ".html" (http://jqapi.com/#p=html):

function adjust(obj){
  $('#content_div').html(obj.text);
}

Надеюсь, это поможет.

...