私はコンテンツ編集可能なdivを持っており、ユーザーがリンク、画像、またはYouTube動画などを挿入できるようにしたいと考えています。現時点ではこれは私が持っているものです。コンテンツ編集可能なdivでカーソルの位置を取得して設定する
function addLink() {
var link = $('#url').val();
$('#editor').focus();
document.execCommand('createLink', false, link);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Text Editor -->
<div id="editor" contenteditable="true"></div>
<!-- Add Link -->
<input type="text" id="url">
<button onclick="addLink()">Submit</button>
あなたが見ることができるように、ユーザーがリンクアドレスを入力するために別のテキストボックスに入力する必要があります。その結果、リンクがエディタに追加されると、リンクはポインタ/キャレットが置かれていた位置に追加されません。
私の質問は、ポインタ/キャレットの位置を取得して設定する方法です。私はthis for setting the pointerのような他の質問を見たことがありますが、Chrome、Safari、Firefox、IE9 +を含む現代のすべてのブラウザでサポートされているソリューションを希望します。
アイデア?ありがとう。
編集:
Iしかし位置を取得し、それだけで、それがオンになっているラインに応じた位置を取得し、それ以下のコードを発見しました。 (|
はカーソルがどこにあるか)私はこれを持っている場合たとえば:
This is some text
And som|e more text
それから私は、値7、ない24
function getPosition() {
if (window.getSelection) {
sel = window.getSelection();
if (sel.getRangeAt) {
return sel.getRangeAt(0).startOffset;
}
}
return null;
}
リンク先のソリューションには、すべてのブラウザで動作するソリューションがあり、受け入れられたものを超えて読むだけです。カーソル位置を取得するために、これを試してください:http://stackoverflow.com/questions/4767848/get-caret-cursor-position-in-contentedit-area-containing-html-content – SunKnight0
@ SunKnight0私は次のコードを試してみました。あなたが提供した解決策は、常に0として返されます。 '' {{{{{{}}}}}}} .com/questions/4811822/get-a-ranges-start-and-end-offsets-parent-container-relative/4812022#4812022 –
'getElementById( 'editor')'を使用してください。あなたはバニラのJavaScriptとJQueryを混在させています。 – SunKnight0