1

我正在制作一个显示著名按钮栏的小工具:Facebook like、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 Sites 中测试它时,我得到的只是 Tweet 文本超链接。

任何人都可以帮我找出问题所在吗?

4

1 回答 1

0

当我在 Firefox 和 Chrome 中将您尝试包含的内容的地址放入浏览器时,出现 XML 呈现错误。在 IE9 中页面是空白的。

Chrome 可能有最好的提示:

此页面包含以下错误:

第 5 行第 28 列的错误:plusone 上的命名空间前缀 g 未定义

第 18 行第 54 列的错误:未定义 like 上的命名空间前缀 fb

下面是第一个错误之前的页面渲染。

鸣叫

所以先看一下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>
...

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

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

希望这可以帮助。

于 2011-07-18T15:14:47.863 回答