コンテンツ編集可能な 編集可能なコンテンツを操作する場合 解決策の概要 この問題を解決するには、現在のカーソル位置を保存します。 div がフォーカスを失ったときに、フォーカスを取り戻したときに復元します。以下に、主要なブラウザ間で動作する実装を示します。 このソリューションは、再フォーカス時のカーソル位置の復元と、クリック時に選択を復元するオプションの動作の両方をカバーします。すべての主要なブラウザと互換性があり、編集可能なコンテンツ 以上がContentEditable ``でカーソル位置を維持する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。var savedRange; // Variable to store the saved selection
var isInFocus; // Flag to track focus state
function saveSelection() {
if (window.getSelection) {
// Browser-specific logic to save the selected range
savedRange = window.getSelection().getRangeAt(0);
}
}
function restoreSelection() {
isInFocus = true;
document.getElementById("area").focus();
if (savedRange != null) {
// Browser-specific logic to restore the saved range
if (window.getSelection) {
var s = window.getSelection();
s.removeAllRanges();
s.addRange(savedRange);
}
}
}
// Optional code for selection restoration on click
function cancelEvent(e) {
if (isInFocus == false && savedRange != null) {
e.stopPropagation();
e.preventDefault();
restoreSelection();
}
}
// Event handlers for saving and restoring selection
$(document).ready(function() {
$("#area").focus(function() {
isInFocus = true;
});
$("#area").blur(function() {
isInFocus = false;
saveSelection();
});
$("#area").mouseup(function() {
saveSelection();
});
$("#area").keyup(function() {
saveSelection();
});
$("#area").focusin(function() {
restoreSelection();
});
// Optional event handlers for restoring selection on click
$("#area").mousedown(function(e) {
return cancelEvent(e);
});
$("#area").click(function(e) {
return cancelEvent(e);
});
});