1

Facebookのような、Tweet、Google Plus、LinkedInShareなどの有名なボタンのバーを表示するガジェットを作成しています。

ここでガジェット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サイトでテストすると、ツイートテキストのハイパーリンクだけが表示されます。

誰かが私が何が悪いのかを理解するのを手伝ってもらえますか?

4

1 に答える 1

0

FirefoxとChromeの両方で、ブラウザに含めようとしているコンテンツのアドレスを入力すると、XMLレンダリングエラーが発生します。IE9では、ページは空白です。

Chromeには最良のヒントがあるかもしれません:

このページには、次のエラーが含まれています。

5行目の28列目のエラー:plusoneの名前空間プレフィックスgが定義されていません

18行目の54列目のエラー:名前空間プレフィックスfbonlikeが定義されていません

以下は、最初のエラーまでのページのレンダリングです。

つぶやき

したがって、最初にshare_bar.htmlファイルを見てください。

編集 挿入しようとしているコンテンツには、複数のSCRIPTタグが含まれています。ブラウザは、要素のinnerHTMLプロパティを設定することにより、実行しようとしているスクリプトインジェクションに問題があるようです。

Shindig / Partuzaコンボテスト環境(iGoogleや他のOpenSocialコンテナーに近い)でテストしたときにうまくいった解決策は、jQueryを使用して挿入を行うことでした。

したがって、最初に次のようにモジュールコンテンツセクションの上部にjquerylibをロードしました。

<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 に答える