13

ユーザーが選択できるはずのテキストがあるシナリオがあります。問題は、その上に UI オーバーレイがあり、デフォルトでテキストを選択できないことです。オーバーレイを保持したままテキストを選択できるようにする論理的な方法は、合成イベントを使用することです ( を使用しますdocument.createEvent) が、何らかの理由で期待どおりに機能しません。

イベントは正しく委任され、ハンドラーを起動しているように見えますが、テキストが選択されていません。ここに例があります。これは、問題を大まかに単純化したものです。

いくつかのメモ

  1. Firefox では、オーバーレイの外で選択を開始すると、オーバーレイの下にある場合でも、必要なテキストを選択できます
  2. カバーされていない領域に通常の選択があり、オーバーレイをクリックすると、委任されたmousedownイベントから選択を削除することが期待されますが、それは起こりません

委任する必要があるイベントがありませんか ( mousedownmousemoveおよびがありmouseupます)。それとも、ブラウザがそのような動作を無効にするための何らかのセキュリティ対策ですか (注番号 2 を参照)。望ましい結果を得る方法に関する他の提案はありますか? 現在のオーバーレイ ソリューションを完全に回避する必要があることはわかっていますが、問題自体についてはすでに興味があります。

4

2 に答える 2

7

この問題に対する 2 つの解決策を見つけました。

  1. 「ポインター イベント」CSS プロパティ。ただし、IE 9.0 以降が必要です。
  2. ExtJS の担当者がイベント転送によって解決したようです: demosourceブログ投稿
于 2012-01-09T15:18:40.497 に答える
2

簡単なトリックを行うことをお勧めします。テキストと同じコンテンツの透明な要素をテキスト自体の上に置き、オーバーレイします。これがデモンストレーションです。

PS:私の経験から、あなたが提案する形式のソリューションはひどいものになります。ブラウザの非互換性、周囲のマークアップやスタイリングの副作用などの影響を受けます。

于 2012-01-09T14:53:14.763 に答える