我正在制作一个显示一系列着名按钮的小工具: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文字超链接。
有人可以帮我弄清楚出了什么问题吗?
答案 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);
}
希望这有帮助。