EditAreaのeditAreaLoader.hide(id_name);がうまく動かないなぁとおもっていた。
<script type="text/javascript"> editAreaLoader.init({ id: "hogehoge", language: "ja", ...省略 }); // BODYタグのonload=で呼び出す function onLoad(){ editAreaLoader.hide("hogehoge"); } </script>
なぜかこの場合、initされたはずのEditAreaが非表示にならない。普通に表示されてしまう。調べていたら、init()が終了される前にBODYタグのonloadが走ってしまうのね。そうか、scriptタグの読み込みは非同期で行われるからonloadが走るときにinitが完了しているとは限らないのか・・・知らずに作っていた。
じゃぁ、どうすればいいのって調べていたら、コールバック関数を指定できるらしい。initでEA_init_callbackキーワードで関数名を指定してやれば、初期化が終了した後に呼び出してくれるらしい。こりゃ便利。
<script type="text/javascript"> editAreaLoader.init({ id: "form_contents", language: "ja", EA_init_callback: "onInitEditArea", }); function onInitEditArea(){ // Edit Areaの初期化終了後の処理 } </script>
ドキュメント上ではEA_load_callbackっていう似たようなキーワードもあって間違えやすいけど、こちらはEdit Areaが初めて表示されるときに呼び出されるもの。