• ベストアンサー

IE7におけるonresizeイベントハンドラについて

お世話になります。 IE7を使用しているのですが、window.onrisizeイベントハンドラがうまく機能しないようなのですが、これはIE7の仕様なのでしょうか? また、IE7以外のブラウザでwindow.onrisizeイベントハンドラが機能しないようなブラウザはあるのでしょうか? ご存知の方がいらっしゃいましたら、よろしくお願いいたします。

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

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

掲示されたソースを実行してみました。 onresizeはalert、resize共に動作しています。 (Minefield,IE7共に。IE7は(ローカルも)セキュリティを高にした上で,デスクトップ上に配置したファイルを読み込ませ,情報バーで許可した) onmove,onMove共にIE7,Minefieldで動作しなかった。DOCTYPE宣言を取り除いても同様だった。(標準モードと互換モード) あくまでFirefox側の書類だが,こんなのがある。(IEの文献は知らん) http://developer.mozilla.org/en/docs/DOM:window#Event_Handlers https://bugzilla.mozilla.org/show_bug.cgi?id=66733 ちなみに,window.onresize=eve1;としたら,リサイズ時にきちんとeve1関数が発動しました。 一方でWebを検索してみると古い時代のIEやNetscapeで対応していたような記述もちらほら見かけるため,当方うろたえています。 他の回答者の実験結果,考察を待ってみたいと思います。 なお、掲示されたソースは onresize→resizeTo→(再びonresizeイベントが発生)→onresize→・・・ というループが発生する可能性があるような気がするのでそこも考えた方がいいかもしれません。

その他の回答 (3)

回答No.4

#2に追記します。Minefield(Firefox 3.0a3pre)で実験したときは [Tools]-[Options] [Content]タブの[Enable Javascript]の[Advanced]を弄りました。何を弄ったかは忘れましたが。

kiku2006
質問者

お礼

himajin100000様 ご親切にいろいろとご教授いただきましてありがとうございました。

回答No.2

あとテストケース(再現しない最小限のソース)くれると嬉しい。 http://developer.mozilla.org/en/docs/DOM:window.onresize にあるソースを弄った以下のソースはIE 7で動作した。 <!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" xml:lang="ja" lang="ja"> <head> <title>onresize test</title> <script type="text/javascript"> window.onresize = resize; function resize() { alert("resize event detected!"); } </script> </head> <body> <p>Resize the browser window to fire the resize event.</p> </body> </html>

kiku2006
質問者

補足

himajin100000様 ありがとうございます。 教えていただいたソースを試しましたらきちんと動きました^^;。 自分のソースを見直してみたのですが、 どうやら機能していないのは、"resizeTo"なのかもしれません...。 eve2() のalert("resize!");を先にもってくると機能しました。 また、onmoveも機能していないようで...。 元のソースは、秀和システムの詳解Javascript辞典という本のサンプルコードだったのですが、それも動かなかったので、何かが違うのかなと思った次第です。 ちなみに、テストしたソースコードは以下の通りです。 何かおかしなところがありましたら、教えていただけるとありがたいです。 よろしくお願いいたします。 <!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"​ xml:lang="ja" lang="ja"> <head> <title>test</title> <script type="text/javascript"> <!-- function eve1() { alert("onmove!"); window.moveTo(50,50); } function eve2() { window.resizeTo(400,400); alert("resize!"); } window.onmove = eve1; window.onresize=eve2; //--> </script> </head> <body> </body> </html>

回答No.1

ちょっと実験してないんだが,(ソースコードの書き方に自信がない(ぉ) >window.onrisize window.onresize の間違いだったりして

kiku2006
質問者

補足

おはずかしい...。 テストしたソースコードの方は window.onresize=eve2; だったので、たぶんスペルミスは無さそうです。 サイズの取得もIEは document.body.clientHeight みたいな感じになるようで、 window.innerWidth は機能しないみたいでした。 サイズ取得のように何か実現方法があると良いのですが...。

関連するQ&A

  • イベントハンドラに下記記述があるのですが、どういう

    ・イベントハンドラに下記記述があるのですが、どういう意味でしょうか?   if (window.event) {   event = window.event;   }

  • オブジェクトとイベントにつきまして

    javascript超初心者です。。 今仮に、スクリプトの中でメソッド、プロパティ、イベントやイベントハンドラの前に、オブジェクトを入れるとします。(たとえば、window.aleart~など) その中でも、イベントやイベントハンドラをスクリプトの中に書くとして、ナビゲーターオブジェクトをその前に書く時、documentなのかwindowなのか、また他のオブジェクトなのか、使い分け方が分かりません。 大変稚拙な質問で申し訳ありませんが、javascriptの先輩方、どういうイベント(イベントハンドラ)の時にwindowで、どういうイベント(イベントハンドラ)の時にdocumentなのか等、ご回答頂けると本当に助かります。 どうぞよろしくお願い致します。

  • イベントハンドラメソッドに関して教えてください

    お世話になります。イベントハンドラメソッドについて教えてください。 -----JS----- function f() { window.alert("Click"); } ---(1) document.myform.mybtn2 = function(){ ---(2) window.alert("Click"); } -----HTML----- <form id="myform" name="myform"> <input type="button" id="mybtn1" name="mybtn1" value="Click" onclick="f()" /> ---(1) <input type="button" id="mybtn2" name="mybtn2" value="Click" /> ---(2) </form> Q:上記のコードで(1)の場合だと正常にalert画面が出ますが、(2)の場合だと何も起こりません。 FirefoxのJavaScriptコンソールで調べると下記のエラーが表示されます。 documnet.myform has no propaties なぜエラーが発生するのか分からずに困っています。 解決の手がかりでもよいので教えてください。

  • ウィンドウが閉じようとしていることを知るには?もしくは、×をつかってウィンドウをとじれなくするには?

    いつもお世話になります。 表題のとおりなのですが、 Window.open でサブウィンドウを開いて、そのウィンドウが閉じられたことをリアルタイムに知るにはどうすればいいでしょうか? サブウィンドウのunloadイベントハンドラを使用してみましたが、ブラウザの×を押されるとイベントハンドラに通知がきません。 確実にウィンドウが閉じられることを知る方法はないでしょうか? よろしくおねがいします

  • JavaScriptのイベントハンドラ設定の方法

    要素(aタグなど)にイベントハンドラを設定する場合、 直接onclick等を書かずにaddEventListenerで追加するのが良いと聞きました。 しかしIEでは使えず、attachEventで設定する必要があります。 htmlとJavaScriptを分離するという意味では理解できるのですが、 http://java-script.seesaa.net/category/2504769-1.html の用に document.getElementById("hoge").onclick = function("hogehoge"); とする方が楽なんじゃないでしょうか? IEでもFirefoxでも動くので、addEventListenerの用にブラウザ毎に書く必要もありません。 前者を使うメリットは何なのでしょうか?

  • プルダウンメニューでのイベントハンドラで悩んでます!

    お世話になります。 現在、データベースより取得したデータ(学校名)を プルダウンメニューにて表示させています。 また、プルダウンが選択された際には、 onchangeイベントを使って取得IDからsubmitを行い、 学校情報を再読み込みするようにしています。 ここで問題なのが、onchangeイベントを使うと ・データベースに情報が1つだった場合 ・一度、読み込んだ学校情報を再度選択した場合 に再読み込みできない点です。 onchange以外に何か良いイベントハンドラや 対策はありますでしょうか? 他のイベントも色々試しましたが、 期待する挙動を示してくれません。 javascriptの先達の皆様ご教授よろしくお願いしますm(_ _)m

  • .NETでのイベントハンドラを自由に操作したい

    .NETでコントロールのイベントハンドラを 自由に取得・設定したいのですが そのようなことはできないのでしょうか? 例えばフォーム上に通常のボタンを貼り付けたのちに 自作のボタンをソースコード内で作成し、通常のボタンにセットされているイベントハンドラを自作ボタンのイベントハンドラに追加する、というようなことが したいのですが。。。 どういうふうにやっても、 「イベント 'System.Windows.Forms.Control.Click' は += または -= の左側にのみ表示されます。」 で、できません。 何か分かる方いらっしゃいましたらお願いいたします。

  • 即時関数とイベントハンドラについて

    javascriptは全体を即時関数で囲って、変数の有効範囲を制限したほうが良いということを知りました。しかしスクリプト全体を囲ってしまうと、関数にもアクセスできなくなってしまいます。イベントハンドラで外部から関数を使用したい場合は、全体を囲うべきではないということでしょうか。 もし対処方法がありましたら、教えてくださると助かります。

  • C# イベントハンドラについて

    http://bbs.wankuma.com/index.cgi?mode=al2&namber=70546 ここで紹介されているソースをさんこうにしていたのですが、 public event EventHandler TextBox1Changed; が果たしている役割がよくわかりません。 これは何のためにあるのでしょうか? たとえば、 http://dobon.net/vb/dotnet/vb2cs/event.html コチラのサイトでは、 public event EventHandler Time; と System.Threading.Thread.Sleep(5000); if (Time != null) { Time(this, EventArgs.Empty); } のように書かれていますが、いきなりif (Time != null)を記述してエラーがでないということは、Cのプロトタイプ宣言のような機能を有しているのでしょうか? また、この例ではなにもしないので具体的な使い方もみえてこず、この次の例はすでに理解を超えていてさっぱりわかりません。 イベントハンドラはいったいどのような役割を担っているのでしょうか?

  • イベントハンドラを外部ファイルに分離させた時のevent.target

    イベントハンドラを外部ファイルに分離させた時のevent.target||event.srcElementの挙動について質問です。お願いします。xhtmlの<div>に直接書いていたeventハンドラを外部に分離しました。 JavaScript ------------------------------ function Test() { var n = document.getElementsByTagName('div')[0]; n.onmouseover = function() { var m = event.target||event.srcElement; var j = m.tagName; alert(j); } } $(function() { Test(); }); ------------------------------ xhtml ------------------------------ <div> <p><img src="img01.png" width="300" height="300" /></p> </div> ------------------------------ n.onmouseover後のfunction()ですが、FireFoxで動きません。 function()をfunction(event)にするとFireFoxで動くようになりますが、IEで動かなくなります。 FireFox、IE両方動くようにするにはどういう記述にしたらいいでしょうか?