ボストンのバスがリアルタイムの gps データからどこにあるかを表示するために、Google マップ (v3) を使用してマッシュアップを作成しています。Google は通常、ズームにスクロールを使用しますが、水平スクロールと垂直スクロールの両方を可能にする 2 本指スクロールを備えたコンピューター (特に Mac) が増えているため、特にパンニングの方が理にかなっていると思います。スクロール イベントを取得できれば、パンをトリガーできますが、それらを取得する方法がわかりません。mousewheel jquery プラグインを見つけましたが、垂直スクロールを簡単に検出するだけのようです。 mozilla によると、firefox post 3.5 はイベントに「軸」プロパティを与えますが、他のブラウザには何も見つかりません。これは新しすぎて十分にサポートされていませんか?
質問する
622 次
2 に答える
2
GitHubで私の「スムーズスクロール」プロジェクトをチェックしてください。これを正確に可能にすることを目的としています。
于 2011-04-11T20:44:58.407 に答える
0
以前、マウス ホイール イベントを検出するためにこのコードを使用したことがあります。IE6+ および FF1.0 + で正常に動作します - ただし、最新のブラウザーではテストされていません!
/** This is high-level function.
* It must react to delta being more/less than zero.
*/
function handle(delta) {
if (delta < 0)
…;
else
…;
}
/** Event handler for mouse wheel event.
*/
function wheel(event){
var delta = 0;
if (!event) /* For IE. */
event = window.event;
if (event.wheelDelta) { /* IE/Opera. */
delta = event.wheelDelta/120;
} else if (event.detail) { /** Mozilla case. */
/** In Mozilla, sign of delta is different than in IE.
* Also, delta is multiple of 3.
*/
delta = -event.detail/3;
}
/** If delta is nonzero, handle it.
* Basically, delta is now positive if wheel was scrolled up,
* and negative, if wheel was scrolled down.
*/
if (delta)
handle(delta);
/** Prevent default actions caused by mouse wheel.
* That might be ugly, but we handle scrolls somehow
* anyway, so don't bother here..
*/
if (event.preventDefault)
event.preventDefault();
event.returnValue = false;
}
/** Initialization code.
* If you use your own event management code, change it as required.
*/
if (window.addEventListener)
/** DOMMouseScroll is for mozilla. */
window.addEventListener('DOMMouseScroll', wheel, false);
/** IE/Opera. */
window.onmousewheel = document.onmousewheel = wheel;
于 2011-01-12T18:03:46.460 に答える