arcanum_jp’s blog

おっさんの日記

Edit Area

 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が初めて表示されるときに呼び出されるもの。