5

JQueryを使用してトラックパッドにクエリを実行できますか?だから私はこのようなことをすることができます:

疑似Javascript(JQuery)

$(document).keyInput().trackpadTwoFingersLeft(function() {
  $('#div ul').animate({left: "=+1"},1);
});

これを実行できるプラグインまたは別のフレームワークはありますか?
すべての応答とアイデアをありがとう。:)

4

5 に答える 5

12

私はWebを少し調べましたが、これまでのところ、ChromeとSafariの両方がブラウザーでこれらのイベントを公開していないことがわかりました。

https://superuser.com/questions/27627/three-finger-page-up-page-down-in-safari-chrome

Safariで利用可能なタッチイベント?

Firefoxは何かをサポートしています:

https://developer.mozilla.org/En/DOM/Mouse_gesture_events

しかし、私はこれへの言及をあまり見ません。

1つのブラウザだけがそれをサポートしている場合、この種のイベントを使用することは少し役に立たないと思います。

于 2011-01-13T07:41:04.617 に答える
2

Macで2本指のスワイプを検出するために使用できるホイールイベントがあります。

コードは次のようになります。

      $('element').on('wheel', function(e){
        var eo = e.originalEvent;
        if(Math.abs(eo.wheelDeltaY) < 10 && Math.abs(eo.wheelDeltaX) > 2){
          e.preventDefault();

          if(eo.wheelDeltaX < -100 && !scope.item.swipedLeft){
              // swipe left
          }

          if(eo.wheelDeltaX > 100 && scope.item.swipedLeft){
              // swipe right
          }
        }
      });

これは、一部の古いブラウザやMozillaでは機能しない可能性があります(ホイールの動きに対して別のイベントが発生するため)が、これを追加/ヘルパー機能として実装する限り、このコードで十分です。

于 2014-12-09T21:53:07.660 に答える
1

おそらく、マウスホイールトラッキングを使用して、目的の効果を得ることができます:http ://www.switchonthecode.com/tutorials/javascript-tutorial-the-scroll-wheel

jQueryを使用する場合は、このマウスホイールプラグインが役立ちます:http://brandonaaron.net/code/mousewheel/docs

于 2012-03-05T18:15:11.657 に答える
0

トラックパッドの使用状況を判断するには、まずOSXマシンにトラックパッドが搭載されていると想定し、次にそのユーザーがマウスを接続しているかどうかを検出します。typescriptを使用しているので、すみませんが、javascriptで動作します。

まず、ユーザーエージェントのプロパティを確認し、OSXの場合は、プロパティがあると想定します。OSが何であるかを判断するために、ユーザーエージェントでいくつかの基本的な文字列式を使用するだけです。

 if (!props.isMobile && props.operatingSystem === OSType.Darwin) {
        props.hasTouchpad = true
        props.hasGestureSupport = props.browser === BrowserType.Safari | props.isMobile
 }

次に、ホイールイベントをリッスンして、そのデバイスを排除します。トラックパッドデバイスは、整数ではない非常に小さなdeltaY値を作成します。私はこれを試しましたが、とても良い仕事をしています。

    const detectMouseType = useCallback((e:WheelEvent) => {

        if (e.ctrlKey || !browserProperties.hasTouchpad) {
            //Didn't detect originally, or pinch zoom OSX and surface, ignore
            return
        }

        let isMouse = e.deltaX === 0 && !Number.isInteger(e.deltaY)

        isMouseCounts.push(isMouse ? 1 : 0)
        if (isMouseCounts.length > 5) isMouseCounts.shift()

        let sum = isMouseCounts.reduce(function(a, b) { return a + b; });

        if (sum > 3 && e.type === "wheel") {
            console.log("Touchpad disabled")
            //detected a mouse not a touchpad, maybe a mouse plugged into a mac
            document.removeEventListener('wheel', detectMouseType);

            props.hasTouchpad = false
            props.hasGestureSupport = false
        }
    }, [])

次に、トラックパッドイベントの使用と、通常はサポートされていないブラウザ(HammerJSなど)でのピンチの検出について説明します。OSXSafariおよびiOS Safariでは、ピンチと回転を検出するのに十分な「gesturestart」イベントと「gesturechange」イベントが発生します。必要なデータを取得するために使用できるスケールおよび回転パラメーターがあります。

始めるためのコードは次のとおりです。

https://medium.com/@auchenberg/detecting-multi-touch-trackpad-gestures-in-javascript-a2505babb10e

OSX Chromeでは、「wheel」イベントを使用して、ピンチ、スクロール、および2本の指のタップを検出できます。表示されるほとんどのソリューションは、OSX Chromeでのピンチまたは2つのフィニガータップをサポートしていませんが、これはサポートしています。Chromeと他のすべてのブラウザのマウスで2本の指でタップしてピンチする方法は次のとおりです。

let scale = 1.0;
let posX = 0.0;
let posY = 0.0;

element.addEventListener('wheel', (e) => {
     e.preventDefault();
     if (e.ctrlKey) {
          //using two fingers
          if (e.deltaY === 0 && e.deltaX === 0) {
             console.log("Chrome two finger tap detected")
          } else {
             console.log("pinch zoom")
             scale = scale - e.deltaY * 0.01
          }
     } else {
          console.log('scrolling')
          posX = posX - e.deltaX * 2
          posY = posY - e.deltaY * 2
     }
});
于 2019-09-17T02:51:14.590 に答える
0

ここにいくつかの情報がありますが、私はそれをテストすることができませんでした

function setupForceClickBehavior(someElement)
{
  // Attach event listeners in preparation for responding to force clicks
  someElement.addEventListener("webkitmouseforcewillbegin", prepareForForceClick, false);
  someElement.addEventListener("webkitmouseforcedown", enterForceClick, false);
  someElement.addEventListener("webkitmouseforceup", endForceClick, false);
  someElement.addEventListener("webkitmouseforcechanged", forceChanged, false);
}

https://developer.apple.com/library/archive/documentation/AppleApplications/Conceptual/SafariJSProgTopics/RespondingtoForceTouchEventsfromJavaScript.html#//apple_ref/doc/uid/TP40016162-SW6

于 2019-09-18T23:13:19.103 に答える