あなたがクリックイベントのoffsetX
とoffsetY
を読み取ることによって、(入力フィールドに対して)、ユーザーのクリックのピクセル位置を取得することができます。
希望キャレットの場所にそれを変換する
// get the click position:
document.getElementById('test').onclick = function(e) {
console.log(e.offsetX, e.offsetY)
};
// for testing the 'select' issue:
document.getElementById('btn').onclick = function() {
document.getElementById('test').select();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="test">xxxxxx</textarea>
<button id="btn">Select</button>
しかし、それはフォントサイズと入力フィールドのテキスト内容に依存するため、簡単ではありません。私が思うには、textarea-caret-positionで使用されているテクニックのようにするのが良いでしょう。ただし、テキストエリア内の可能なすべてのキャレット位置を反復して、ユーザーがクリックした場所に最も近いものを見つけてください。あなたが念頭に置いている仕事のためにほとんど確実に過剰です。
(現行バージョンのfirefox(v57)では、入力フィールドが選択されているかどうかにかかわらず、キャレットを正しく配置するのに問題はないようです)これは前のバージョン)
"Where"は何を意味していますか?あなたは正確に何をしていますか? – epascarello
@ epascarelloのコメントに対する答えに応じて、これはhttps://stackoverflow.com/q/16105482/215552またはhttps://stackoverflow.com/q/263743/215552の複製となる可能性があります。タイトルにタグを追加する必要はありませんが、検索は:) –
基本的には、キャレットがどこにあるのかを知る必要がありますが、ユーザーが入力要素をクリックしたときにキャレットがどこにあるのかを知る必要があります。 – Lex