gpt4 book ai didi

javascript - 当用户在元素外部单击时,您如何避免失去对该元素的关注?

转载 作者:可可西里 更新时间:2023-11-01 02:49:53 25 4
gpt4 key购买 nike

我想防止在 contentEditable 区域外单击时失去焦点。一些示例 HTML 如下所示:

<div id="content">
<p>Hello</p>
</div>
<div id="clickThis">
<p>If you click on this or anywhere for that matter after focusing on Hello, you lose your focus on Hello</p>
</div>

示例 Javascript 如下所示:

$(document).ready(function()
{
$('#content')[0].contentEditable=true;

$('#clickThis').bind('click',function(e)
{
console.log(window.getSelection().getRangeAt(0).startContainer);
e.preventDefault();
});
});

当您单击 #clickThis div 或 #content div 之外的任何位置时,您将失去对 #content div 的关注,即使您调用点击事件的 preventDefault 函数。

此外,范围会在点击事件被触发时发生变化,所以我不能在点击发生后就返回到之前的范围。有没有办法在点击发生后保持光标位置和焦点?

jsFiddle:http://jsfiddle.net/VivekVish/FKDhe/4/

最佳答案

将 Juan 的问题转化为答案,而不是使用 click 事件,您必须使用 mousedown 事件,如下所示:

$(document).ready(function()
{
$('#content')[0].contentEditable=true;

$('#clickThis').bind('mousedown',function(e)
{
console.log(window.getSelection().getRangeAt(0).startContainer);
e.preventDefault();
});
});

你可以看到它在这里工作:

http://jsfiddle.net/FKDhe/7/

关于javascript - 当用户在元素外部单击时,您如何避免失去对该元素的关注?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7392959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com