10

背景: whenisgood.netを連想させるテーブルを作成しています。テーブル要素のクリック アンド ドラッグ トグルがあります。mousedownマウスの左ボタン、中ボタン、右ボタンでイベントがアクティブになったときに、さまざまな種類のトグル コードを呼び出したいと考えています。

JQuery を使用することで、良いスタートを切ることができました。

$(".togglable").bind("contextmenu", function() {return false;});
$(".togglable").bind("mousedown", function(e){
  e.preventDefault();
  toggle(this, e);
});

このtoggle()関数では、e.whichどのボタンがクリックされたかを判断するために使用できます。

オチ: e.preventDefault() を使用して、スクロールのミドルクリックのデフォルト動作を停止することを期待しました。そうではありませんでした。スクロール アクションがアクティブにならないようにするにはどうすればよいですか?

「中クリックを使用した onclick イベントのトリガー」も参照してください。

4

4 に答える 4

12

中クリックは Javascript で無効にできますが、IE、WebKit、および Konquerer でのみ無効にすることができます。Firefox では構成ファイルの編集が必要です。それは 2017 年であり、firefox 50 はこれをサポートしています。

于 2009-12-18T22:01:05.973 に答える
6

これは古い質問です...しかし、私がそれを正しく理解している場合、マウスの中ボタンをクリックしてスクロールを無効にしたいと考えています。

最近では、バニラ JS の 1 行でこれを行うことができます。

document.body.onmousedown = function(e) { if (e.button === 1) return false; }
于 2015-05-24T12:33:47.977 に答える
3

現在、私の解決策はこれです:(もっとjquery!)

$(".togglable").wrap(
  "<a href='javascript:void(0);'
  onclick='return false;'></a>"
);

( jquery wrapを介して)リンクでラップすることにより、ブラウザはそれがリンクであると見なし、マウスをドラッグしても中クリックでスクロールしません。この設定と私の状況では、いくつかの(マイナーな)落とし穴があります。

Firefoxは、中クリックすると新しいタブを開きますが、ドラッグしない場合に限ります。中クリック、ドラッグ、またはクリックしないと、Operaは新しいタブを開きます。そのため、クライアントのブラウザがページ全体をロードせず、奇妙なURLを持つ空白のページだけをロードするようhref='javascript:void(0);'に、単に--の代わりに使用しました。href='#'

しかし、このソリューションはChromeとSafariの魅力のように機能します。IE8でうまく機能しますが、左クリックしてドラッグすると、リンクをどこかにドラッグしたいと思うので、ポインタが「それはできません」という記号に変わります。古いバージョンのIEではテストされていません。

于 2009-12-30T23:07:58.533 に答える
2

すでに少し古いスレッドですが、Firefox (私はまだ 3.6 を使用しています) でこれを回避しようと懸命に努力してきました。

空の HTML ファイル (またはいくつかの段落を含む小さなドキュメント) を作成して Firefox にロードすると、中クリック スクロールバーが表示されないことを確認します。これは、<body>の幅と高さがウィンドウ サイズよりも小さいためです。をたくさん入れると<br>そうではなく、中クリックでスクロールバーが表示されます。

Google は、(JS を介して)<body>サイズが常にウィンドウ サイズよりも小さいことを確認し、さらに <body style="overflow:hidden;">.

これは一般的なケースではほとんど実現できませんが、役立つ場合もあります。

于 2011-09-08T20:28:00.633 に答える