単二電池

あまりしないことだと思うのですが。
質問させていただきます。

ボタンをクリックしてmousewheelイベントを発生させることはできるでしょうか。
下記の様に書いたのですが、
event.wheelDelta = -120; //or 120
が無視されました。

function click_hoge(){
var event = document.createEventObject();
event.eventType="mousewheel";
event.wheelDelta = -120; //or 120
document.body.fireEvent( "onmousewheel", event );
}

失礼いたします。

A 回答 (2件)

eventオブジェクトのwheelDeltaプロパティは、


現状のブラウザ(IE、Chrome、Firefox、Safari)では
読み出しのみで、値をセットをする事は出来ません。

http://msdn.microsoft.com/en-us/library/ms535142 …
http://help.dottoro.com/ljekedtv.php


WheelEventイベントの発火自体出来ます。
IEは、
 var evt = document.createEventObject();
 evt.detail = 0;
 elment.fireEvent ("onmousewheel",evt);
IE以外は、
 var evt = document.createEvent("WheelEvent");
 var detail = 0;
 evt.initUIEvent("mousewheel",true,true,document.defaultView,detail);
 elment.dispatchEvent(evt);
です。DOM Level 3 Eventインターフェースが実装されれば、
 var evt = document.createEvent("WheelEvent");
 evt.initWheelEvent("wheel",true,true,document.defaultView,0,0,0,0,0,0,
  document.body,null,0,-120,0,0);
 elm.dispatchEvent(evt);
とできそうですが....

現状の対処として、イベント自体は発火してますから、
detailプロパティにホイール量を仮セットしておいて、
onmousewheelのイベントハンドラー関数で、
event.wheelDeltaを参照する代わりに、event.detailを参照して
スクロールなり何なりの処理を自分で書いてあげれば、
思ったことが出来るかも。

http://www.w3.org/TR/DOM-Level-3-Events/#events- …
http://help.dottoro.com/ljrxdxdw.php
http://msdn.microsoft.com/en-us/library/ms536390 …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
詳しく説明して頂いたので、とても参考になりました。

msdnのサイトに詳しく載っているんですね。

こちらも見るようにしようと思います。

有難うございました。

お礼日時:2010/12/15 18:31

よくわかってませんが・・・




event.wheelDeltaはread-onlyとなっているようなので、値の設定ができないのでは?
http://msdn.microsoft.com/en-us/library/ff974876 …

initMouseWheelEvent()を用いれば可能みたいですが、私の手元の環境では確認できないので・・・
http://msdn.microsoft.com/en-us/library/ff975287 …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

サイトに詳しく書かれているので、試してみようと思います。

有難うございました。

お礼日時:2010/12/15 18:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!