4

スタイルの div があるoverflow: hidden;場合、キーボード操作によって div がスクロールされる場合があることがわかりました。また、スクロールバーがないため、div を元の状態に戻す方法は実際にはありません。これを防ぐためにスタイルを指定する以外に何かすべきことはありますか?

たとえばL、マウスで (フィドルで) を選択し、その後、Shift キーを押しながら下矢印キーを押す (つまり、選択範囲を拡大する) 場合です。

http://jsfiddle.net/PeeHaa/H34mM/

または別のシナリオは、div にテキストエリアがある場合です: http://jsfiddle.net/h6Bhb/1/

4

2 に答える 2

1

簡単な解決策は、関連する要素でテキスト選択を無効にすることです。そのため、矢印キーを使用してさらに選択する可能性を防ぎます。

event.preventDefault()tekst selectを防ぐには、JSを使用したmousedownイベントで行う必要があります。

最新の標準に準拠したブラウザでこのように見える可能性のあるフィドルの場合:

// give the div an id
document.getElementById('div').addEventListener('mousedown', function(e) {
    e.preventDefault();
}, false);​

編集

または、@ JimThomasがコメントで指摘しているように、CSSを使用してテキスト選択を無効にすることができます。もちろん、これはJSソリューションほど多くのサポートを享受していません。 CSSを使用してテキスト選択の強調表示を無効にする方法は?

私はこれ以上優雅で完全な(これは入力で発生する可能性のある問題を解決しません)解決策を考えることができませんでした、そして私はそれが1つでもあるかどうかわかりません...

于 2012-05-05T19:11:25.643 に答える
0

これを div CSS に追加します。

-moz-user-select: -moz-none;
-khtml-user-select: none;
-webkit-user-select: none;
-ms-user-select: none; /* IE10+ */
user-select: none;

< IE10 または Textarea では機能しませんが、選択を防ぐためにテキストエリア自体を無効にしない限り、テキストエリアのシナリオを妨げるものは何もないと思います。

...またはJSソリューションを使用します。

于 2012-05-05T19:19:44.447 に答える