2013-01-29 20 views
6

これは他のすべてと同じ質問ではありません。私は既にChromeがドラッグ中にテキスト選択モードに入ることを妨げています。(編集:私はアイコンや外観をロックしたい、位置や動きを制限しない、mousedownとmouseupの間でのみ)私が避けたい問題は、Chromeがカーソルの下にあるものテキスト入力制御、ハイパーリンク上でのハンドなど)を実行することができます。Chromeでドラッグ中にマウスカーソルをロックする

IEとFireFox/Mozは、mousedownイベントで呼び出すelement.setCapture()を使用して、これらのブラウザを要素に「ロック」するので、その要素のカーソルが何であれ、マウスカーソルがそのままになります。 。 Chromeは、私が知っているその機能などをサポートしていません。

クリックした要素の代わりにドキュメントオブジェクトのmousemoveとmouseupイベントを見て、をsetCapture()のほとんどの動作から得ることができます。要素、そしてブラウザウィンドウの外にもあります。しかし、Chromeでマウスカーソルが変わっても問題は1つ残っています。

+0

ボタンをクリックしてマウスをドラッグして別のブラウザのページを表示すると、問題の原因がわかります。 IEとFFでは、マウスのアイコンはボタンに設定されたものにとどまります(ボタンがボタンを押しながらマウスを「キャプチャ」するため)。 Chromeでは、ドラッグするとマウスが変わります。たぶん、このようなChromeユーザーは、気づいたことも気にしない可能性も高いですが、私の特定の用途(テーブルの列のサイズを変更するためにドラッグする)が気になり、ユーザーにとって「バグ」のように思えます。 – eselk

答えて

0

私は通常、マウスの上に目的のカーソルを置き、マウスの上にそれを削除する要素を配置します。それは私のために働きます。

3

ユーザーが入力デバイス(許可されている場合)を制御するために最近導入された方法であるPointer Control Lock APIを探していると思います。大きなユースケースはゲームです。

安全でサポートされているAPIがないと、サイトがユーザー入力コントロールを引き継ぐことはかなり悲惨です(クリックジャックや強制的なマルウェアのダウンロード)。そのため、カーソルを「ロック」しようとすると、あなたの唯一のオプション。

+1

私はうまくいけば私の質問を更新します - 私はカーソルの外観(あなたの場合はアイコン)をロックするだけで、動きの範囲や場所を制限したくないです。他のブラウザでsetCapture()が何をしているのか、セキュリティ上の問題がなくても私の知る限りで10年以上経ちました。 – eselk

関連する問題