• ベストアンサー

window.onloadイベントの任意実行はできませんか?

ajaxによる画面項目切り替えを行っていますが、 その場合、window.onloadイベントが発生しないようです。 ユーザからの命令でwindow.onloadイベントを発生させることは不可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

できることは出来るが,ライブラリ側のソースを読んでバグあるいは仕様を把握してからにしてくれ。 ==================================================== <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Q5209553 TestCase 2</title> <style type="text/css"> p{ background-color:red; } </style> <script type="text/javascript"> //<![CDATA[ var i = 0; function test1(){ alert(i); i = i + 1; } function test2(){ /* http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-DocumentEvent */ /* http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-Event-initEvent */ /* http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget-dispatchEvent */ /* http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-htmlevents */ var e = document.createEvent("HTMLEvents"); e.initEvent("load",false,false); window.dispatchEvent(e); } function test3(){ window.addEventListener('load',test1,false); /* useCaptureはよく解らん。*/ /* Safariではbody要素のonload属性に記述しても発動しなかった。*/ /* 一応script要素内の関数外とかにかけばうまくいく事は確認しているが,俺はその手のコード嫌い */ /* IEは何か,fireEventメソッドだかがうまく実行できなかった。*/ } //]]> </script> </head> <body> <p onclick="test3();" >あああ</p> <!-- こっちを1回クリック --> <p onclick="test2();" >いいい</p> <!-- その後こっちをクリックするたびに表示される値が変化する --> </body> </html>

accho0921
質問者

お礼

早速のご回答ありがとうございました。 こんな方法があること全く知りませんでした。 コメントにも書いて頂いたように、body.onloadが上手く発動しないようですね。 mouse.onclickは任意発動できることを確認しました。 もうしばらくがんばってみます。

その他の回答 (1)

回答No.2

<script type="text/javascript"> window.onload=function(){ alert('onload'); } </script> <a onclick="window.onload();">オンロード</a> IE8(IE7互換モード)、スクリプトレット(他のブラウザの言い方ではブックマークレット)で検証 window.addEventListener/window.attachEventを使ってセットしたものについては、 その関数を直接呼び出せば良いと思います。 <script type="text/javascript"> function test1(){ alert('hello'); } window.addEventListener('load', test1, false); </script> <a onclick="test1();">オンロード</a> FirefoxではXMLモードとHTMLモードで動作が違うかもしれません。(FirefoxのJavaScript全体に言えることですが)

accho0921
質問者

お礼

お礼遅くなり申し訳ありませんでした。 たいへん勉強になりました。 参考にし、実装していきたいと思います。

関連するQ&A