5

[12345678] や [12345 67890]<input type="text">などのランダムな既存のテキストを含む HTML があり ます。このテキスト内に任意の配置のマウスダウン クリック イベントがあります。JS でキャレットを適切に配置するために、2D マウスダウン クリック ページ座標を 1D 文字ベースのテキスト座標に変換する必要があります。明らかに、ブラウザーには、この変換を内部で行う機能があります。と呼んでもいいでしょう。入力には標準の可変幅フォントがあり、任意のレベルの倍率にすることができます。ブラウザは FireFox に制限されています。JQuery と JCursor があります。<textarea>

背景: 入力フィールドは、深くネストされたボックス内で動的に生成され、それぞれが危険なオーバーロードを持っています。レガシー コードと最新の FF 実装の組み合わせは、マウスダウンが入力要素からバブルアップしてからデフォルトのブラウザの set-caret アクションに到達するまでの間、マウスダウンの伝播/フォーカスを何らかの形で盗んでいますが、これは発生していません。自分でキャレットを設定する必要があります。

4

1 に答える 1

0

この例の回避策は、イベントでレベル 2 の stopPropagation() 呼び出しを使用し、レベル 0 の onmousedown ハンドラに対して true (伝播を続ける) を返すことです。これにより、[親構造のレガシー コードに] バブルアップする際のレベル 2 呼び出しが回避されますが、バブルアップ フェーズの後に [キャレットを配置する] ネイティブのデフォルト アクションが実際に発生することが保証されます。ただし、他の用途がある元の質問にはまだ答えていません。

于 2013-01-09T03:18:15.683 に答える