JavaScript でムダな努力
ふと、「JavaScript で追加した HTML のエレメントから JavaScript の関数を実行しよう」と思いまして。というか、そうしなくてはいけないと思い込みまして。以下は、いろいろ試行錯誤した(と言うか無駄な努力)の記録です。
最初は「例:1」を実行すれば楽勝じゃん!と思ってたんですが、innerHTML に追加した場合、そのスクリプトは実行されないようなんですよ。同様の理由で「例:2」も実行されませんでした。
じゃぁ、JSON でよく使う、appendChild を使ったエレメントの追加「例:3」だとどうかというと、実行はされるんですが、引数が渡せないんですよね。
もっとも、読み込む ファイル を CGI で自動生成するようにして、引数の情報を QUERY_STRING として渡してやればいいんですが、ちょっと大がかりですよね。
と言うわけで行き着いたのが「例:4」の方法です。JavaScript のソースを className に仕込んでおいて、後から読み出して eval するわけですが、やっぱり面倒です。
結局「例:5」の方法に落ち着いたわけですが、よく考えてみれば普通に関数を実行すればいいだけの話なんですよね。
だから、ここまで試行錯誤した成果は活用されず、ただ普通に関数を呼ぶプログラムに落ち着いたのでありました。嗚呼、なんと無駄な努力だったのでしょう・・・orz
それにしても、思い込みって怖いですね(反省)。
まぁ、それでも全く収穫が無かったわけではなくて img、iframe、frameset の各タグでも onload が使えるってコトを知ることができました。
気分的には frameset タグより frame タグ で使えたほうが理にかなってるような気がするんですけどねぇ。
参照リンク
・onLoad