[google-gadgets] iGoogle ガジェットで standard mode が使えるライブラリ

7 views
Skip to first unread message

管理人:伊藤千光

unread,
Sep 21, 2008, 11:58:50 AM9/21/08
to WebOS Goodies
こんにちは、伊藤です。

iGoogle ガジェットで standard mode を使うためのライブラリを作ってみました。ガジェットのクライアントエリア全体を覆う
IFRAME を作り、その中にコンテンツを流し込むというもので、 iGoogle API のいくつかの機能 (gadgets.io,
gadgets.Prefs, gadgets.window など) もその IFRAME 内から呼び出せます。

使い方は簡単で、まず最初にガジェットのコンテンツ全体を id="_std_content" な隠し DIV 内に入れます。もしスクリプトがある
場合は、二重に実行されるのを防ぐため if(window.StdIG) { ... } で囲います。

<div id="_std_content" style="display:none;">
<div>Hello Standard World!</div>
<script type="text/javascript">
if(window.StdIG) {
document.open();
document.write(document.compatMode);
document.close();
}
</script>
</div>

あとは、 std-ig.js を読み込むだけです。

<script type="text/javascript">
var url = gadgets.io.getProxyUrl('http://std-ig.googlecode.com/svn/
trunk/std-ig.js');
document.open();
document.write('<scr'+'ipt src="' + url + '"></scr' + 'ipt>');
document.close();
</script>

IFrame 内で呼び出せる API などはプロジェクトページに記載しています。

http://code.google.com/p/std-ig/

quirks mode の変な CSS の挙動に辟易していたら、ぜひお試しください。ご意見・ご感想などもお待ちしています。

管理人:伊藤千光

unread,
Sep 27, 2008, 1:12:54 PM9/27/08
to WebOS Goodies
こんにちは、 WebOS Goodies 管理人の伊藤です。

先日投稿した iGoogle ガジェットで standard mode を使うためのライブラリですが、
残念ながら IE で致命的な問題が見つかってしまいました。

IFrame に HTML を流し込む際に、その中のスクリプトで document.write を呼ぶと
IE がハングアップしてしまうようです。サンプルで示したコードで使っているので
気付けよという感じですが、 IE では別のユニットテスト用ガジェットしか試していなくて、
そちらでは document.write を使っていなかったので気付きませんでした。

document.write を再定義したりして回避方法を模索したのですが、
いずれもいろいろ問題があり、満足できる解決方法が見つかりませんでした。
もしうまい解決方法をご存知の方がおられましたら、ぜひ教えてください。

もし IE サンプルガジェットなどを実行してしまった方がおられましたら、
ご迷惑をおかけして大変申し訳ありません。
Reply all
Reply to author
Forward
0 new messages