为什么我的Google小工具无法正常呈现?

时间:2011-07-08 23:15:58

标签: javascript google-gadget

我正在制作一个显示一系列着名按钮的小工具:Facebook,Tweet,Google Plus和LinkedIn Share。

如果您将gadget HTML粘贴到编辑器here,您会看到它显示正常。

我的Gadget代码的作用基本上是加载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 :(得分:0)

当我将您尝试包含的内容的地址放入浏览器时,我在Firefox和Chrome中都遇到了XML渲染错误。在IE9中,页面只是空白。

Chrome可能有最好的提示:

  

此页面包含以下错误:

     第28行第5行的

错误:plusone上的命名空间前缀g不是   定义

     第54行第14行的

错误:名称空间前缀fb on like   未定义

     

下面是第一个错误之前的页面呈现。

     

资料Tweet

首先看一下share_bar.html文件。

修改 您尝试插入的内容包含多个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>
...

然后我调用了有用的“.html”方法(http://jqapi.com/#p=html),而不是操纵innerHTML属性:

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

希望这有帮助。