Javascript 当“模糊”事件发生时,我如何找出焦点转到哪个元素?

Javascript 当“模糊”事件发生时,我如何找出焦点转到哪个元素?,javascript,events,Javascript,Events,假设我将模糊函数附加到HTML输入框,如下所示: <input id="myInput" onblur="function() { ... }"></input> <span id="mySpan">Hello World</span> <script type="text/javascript"> function myFunction(thisElement) { document.getElementByName(t

假设我将模糊函数附加到HTML输入框,如下所示:

<input id="myInput" onblur="function() { ... }"></input>
<span id="mySpan">Hello World</span>
<script type="text/javascript">
function myFunction(thisElement) 
{
    document.getElementByName(thisElement)[0];
}
</script>
<input type="text" name="txtInput1" onBlur="myFunction(this.name)"/>
const focusedElement = document.activeElement
如果在输入元素具有焦点后单击范围,则输入元素将失去焦点。函数如何知道单击的是mySpan

PS:如果span的onclick事件发生在输入元素的onblur事件之前,我的问题就会得到解决,因为我可以设置一些状态值,指示某个特定元素已被单击

PPS:这个问题的背景是,我想从一个可点击的元素外部触发一个AJAX自动完成器控件来显示它的建议,而不会因为输入元素上的模糊事件而使建议立即消失。所以我想检查一下模糊函数中是否有一个特定的元素被点击,如果是的话,忽略模糊事件

编辑: 一个简单的方法是创建一个变量来跟踪你关心的每个元素的焦点。因此,如果您关心“myInput”失去焦点,请在焦点上为其设置一个变量

<script type="text/javascript">
   var lastFocusedElement;
</script>
<input id="myInput" onFocus="lastFocusedElement=this;" />
原始答复: 您可以将“this”传递给函数

<input id="myInput" onblur="function(this){
   var theId = this.id; // will be 'myInput'
}" />
编辑: 一个简单的方法是创建一个变量来跟踪你关心的每个元素的焦点。因此,如果您关心“myInput”失去焦点,请在焦点上为其设置一个变量

<script type="text/javascript">
   var lastFocusedElement;
</script>
<input id="myInput" onFocus="lastFocusedElement=this;" />
原始答复: 您可以将“this”传递给函数

<input id="myInput" onblur="function(this){
   var theId = this.id; // will be 'myInput'
}" />
这样:

<script type="text/javascript">
    function yourFunction(element) {
        alert(element);
    }
</script>
<input id="myinput" onblur="yourFunction(this)">
编辑:对不起。我误读了这个问题。

这样:

<script type="text/javascript">
    function yourFunction(element) {
        alert(element);
    }
</script>
<input id="myinput" onblur="yourFunction(this)">
编辑:对不起。我误读了这个问题。

我认为这是不可能的, 在IE中,你可以尝试使用window.event.toElement,但它不能与firefox一起使用

我认为这是不可能的,
在IE中,你可以尝试使用window.event.toElement,但它不能与firefox一起使用

嗯。。。在Firefox中,您可以使用explicitOriginalTarget提取单击的元素。我希望toElement也能为IE做同样的事情,但它似乎不起作用。。。但是,您可以从文档中提取新关注的元素:

function showBlur(ev)
{
   var target = ev.explicitOriginalTarget||document.activeElement;
   document.getElementById("focused").value = 
      target ? target.id||target.tagName||target : '';
}

...

<button id="btn1" onblur="showBlur(event)">Button 1</button>
<button id="btn2" onblur="showBlur(event)">Button 2</button>
<button id="btn3" onblur="showBlur(event)">Button 3</button>
<input id="focused" type="text" disabled="disabled" />

这应该适用于在Chrome、IE和Firefox中测试过的大多数现代浏览器,但需要注意的是,Chrome不会将焦点设置在单击的按钮上,而不是选项卡式按钮上

嗯。。。在Firefox中,您可以使用explicitOriginalTarget提取单击的元素。我希望toElement也能为IE做同样的事情,但它似乎不起作用。。。但是,您可以从文档中提取新关注的元素:

function showBlur(ev)
{
   var target = ev.explicitOriginalTarget||document.activeElement;
   document.getElementById("focused").value = 
      target ? target.id||target.tagName||target : '';
}

...

<button id="btn1" onblur="showBlur(event)">Button 1</button>
<button id="btn2" onblur="showBlur(event)">Button 2</button>
<button id="btn3" onblur="showBlur(event)">Button 3</button>
<input id="focused" type="text" disabled="disabled" />

这应该适用于在Chrome、IE和Firefox中测试过的大多数现代浏览器,但需要注意的是,Chrome不会将焦点设置在单击的按钮上,而不是选项卡式按钮上

你能把你检查的内容和时间颠倒过来吗?如果你还记得上次模糊了什么:

<input id="myInput" onblur="lastBlurred=this;"></input>
然后在跨度的onClick中,使用两个对象调用函数:

<span id="mySpan" onClick="function(lastBlurred, this);">Hello World</span>

然后,您的函数可以决定是否触发Ajax.AutoCompleter控件。该函数包含单击对象和模糊对象。onBlur已经发生了,所以它不会使建议消失。

您能逆转您正在检查的内容和时间吗?如果你还记得上次模糊了什么:

<input id="myInput" onblur="lastBlurred=this;"></input>
然后在跨度的onClick中,使用两个对象调用函数:

<span id="mySpan" onClick="function(lastBlurred, this);">Hello World</span>

然后,您的函数可以决定是否触发Ajax.AutoCompleter控件。该函数包含单击对象和模糊对象。onBlur已经发生,因此不会使建议消失。

我建议使用全局变量blurfrom和blurto。然后,配置您关心的所有元素,当它们失去焦点时,将它们在DOM中的位置指定给变量blurfrom。此外,配置它们,以便获得焦点将变量blurto设置为它们在DOM中的位置。然后,您可以使用另一个函数来分析blurfrom和blurto数据。

我建议使用全局变量blurfrom和blurto。然后,配置您关心的所有元素,当它们失去焦点时,将它们在DOM中的位置指定给变量blurfrom。此外,配置它们,以便获得焦点将变量blurto设置为它们在DOM中的位置。然后,您可以同时使用另一个函数来分析blurfrom和blurto数据。

我最终通过onblur事件的超时解决了这个问题,多亏了一位不喜欢StackOverflow的朋友的建议:

<input id="myInput" onblur="setTimeout(function() {alert(clickSrc);},200);"></input>
<span onclick="clickSrc='mySpan';" id="mySpan">Hello World</span>

在FF和IE中都有效。

我最终在onblur事件上超时解决了这个问题,多亏了一位不喜欢StackOverflow的朋友的建议:

<input id="myInput" onblur="setTimeout(function() {alert(clickSrc);},200);"></input>
<span onclick="clickSrc='mySpan';" id="mySpan">Hello World</span>

在FF和IE中都可以使用。

我还试图让Autocompleter在特定元素单击时忽略模糊,并有一个有效的解决方案,但由于显式目标,仅适用于Firefox

Autocompleter.Base.prototype.onBlur = Autocompleter.Base.prototype.onBlur.wrap( 
        function(origfunc, ev) {
            if ($(this.options.ignoreBlurEventElement)) {
                var newTargetElement = (ev.explicitOriginalTarget.nodeType == 3 ? ev.explicitOriginalTarget.parentNode : ev.explicitOriginalTarget);
                if (!newTargetElement.descendantOf($(this.options.ignoreBlurEventElement))) {
                    return origfunc(ev);
                }
            }
        }
    );
这段代码包装了Autocompleter的默认onBlur方法,并检查是否设置了ignoreBlurEventElement参数。若已设置,则每次都会检查单击的元素是否为ignoreBlurEventElement。如果是,自动补全器不会校准onBlur,否则它会调用onBlur。唯一的问题是
它只在Firefox中有效,因为explicitOriginalTarget属性是特定于Mozilla的。现在我试图找到一种不同于使用explicitoringinaltarget的方法。您提到的解决方案要求您将onclick行为手动添加到元素中。如果我无法解决ExplicitoringinalTarget问题,我想我会遵循您的解决方案。

我还试图使Autocompleter在特定元素单击时忽略模糊,并有一个有效的解决方案,但由于ExplicitoringinalTarget,仅适用于Firefox

Autocompleter.Base.prototype.onBlur = Autocompleter.Base.prototype.onBlur.wrap( 
        function(origfunc, ev) {
            if ($(this.options.ignoreBlurEventElement)) {
                var newTargetElement = (ev.explicitOriginalTarget.nodeType == 3 ? ev.explicitOriginalTarget.parentNode : ev.explicitOriginalTarget);
                if (!newTargetElement.descendantOf($(this.options.ignoreBlurEventElement))) {
                    return origfunc(ev);
                }
            }
        }
    );

这段代码包装了Autocompleter的默认onBlur方法,并检查是否设置了ignoreBlurEventElement参数。若已设置,则每次都会检查单击的元素是否为ignoreBlurEventElement。如果是,自动补全器不会校准onBlur,否则它会调用onBlur。唯一的问题是它只适用于Firefox,因为explicitOriginalTarget属性是特定于Mozilla的。现在我试图找到一种不同于使用explicitoringinaltarget的方法。您提到的解决方案要求您将onclick行为手动添加到元素中。如果我无法解决explicitOriginalTarget问题,我想我会遵循您的解决方案。

请记住,使用explicitOriginalTarget的解决方案不适用于文本输入到文本输入的跳转

尝试用以下文本输入替换按钮,您将看到不同之处:

<input id="btn1" onblur="showBlur(event)" value="text1">
<input id="btn2" onblur="showBlur(event)" value="text2">
<input id="btn3" onblur="showBlur(event)" value="text3">

请记住,使用EXPLICITORIGNALTarget的解决方案不适用于文本输入到文本输入的跳转

尝试用以下文本输入替换按钮,您将看到不同之处:

<input id="btn1" onblur="showBlur(event)" value="text1">
<input id="btn2" onblur="showBlur(event)" value="text2">
<input id="btn3" onblur="showBlur(event)" value="text3">

可以使用文档的mousedown事件而不是模糊:

$(document).mousedown(function(){
  if ($(event.target).attr("id") == "mySpan") {
    // some process
  }
});

可以使用文档的mousedown事件而不是模糊:

$(document).mousedown(function(){
  if ($(event.target).attr("id") == "mySpan") {
    // some process
  }
});

我一直在使用相同的功能,发现FF、IE、Chrome和Opera能够提供事件的源元素。我还没有测试过Safari,但我猜它可能有类似的功能

$('#Form').keyup(function (e) {
    var ctrl = null;
    if (e.originalEvent.explicitOriginalTarget) { // FF
        ctrl = e.originalEvent.explicitOriginalTarget;
    }
    else if (e.originalEvent.srcElement) { // IE, Chrome and Opera
        ctrl = e.originalEvent.srcElement;
    }
    //...
});

我一直在使用相同的功能,发现FF、IE、Chrome和Opera能够提供事件的源元素。我还没有测试过Safari,但我猜它可能有类似的功能

$('#Form').keyup(function (e) {
    var ctrl = null;
    if (e.originalEvent.explicitOriginalTarget) { // FF
        ctrl = e.originalEvent.explicitOriginalTarget;
    }
    else if (e.originalEvent.srcElement) { // IE, Chrome and Opera
        ctrl = e.originalEvent.srcElement;
    }
    //...
});

使用类似以下内容:

<input id="myInput" onblur="function() { ... }"></input>
<span id="mySpan">Hello World</span>
<script type="text/javascript">
function myFunction(thisElement) 
{
    document.getElementByName(thisElement)[0];
}
</script>
<input type="text" name="txtInput1" onBlur="myFunction(this.name)"/>
const focusedElement = document.activeElement
var-myVar=null; 然后在函数内部:

myVar=fldID; 然后:

setTimeoutsetFocus,1000 然后:

函数setFocus{document.getElementByIDFLIDD.focus;} 最终代码:

函数{ var-myVar=null; myVar=document.getElementById'myInput'; ifmyVar.value== setTimeoutsetFocusOnJobTitle,1000; 其他的 myVar.value='Success'; } 函数setFocusOnJobTitle{ getElementById'myInput'。焦点; } 职位名称
使用类似以下内容:

<input id="myInput" onblur="function() { ... }"></input>
<span id="mySpan">Hello World</span>
<script type="text/javascript">
function myFunction(thisElement) 
{
    document.getElementByName(thisElement)[0];
}
</script>
<input type="text" name="txtInput1" onBlur="myFunction(this.name)"/>
const focusedElement = document.activeElement
var-myVar=null; 然后在函数内部:

myVar=fldID; 然后:

setTimeoutsetFocus,1000 然后:

函数setFocus{document.getElementByIDFLIDD.focus;} 最终代码:

函数{ var-myVar=null; myVar=document.getElementById'myInput'; ifmyVar.value== setTimeoutsetFocusOnJobTitle,1000; 其他的 myVar.value='Success'; } 函数setFocusOnJobTitle{ getElementById'myInput'。焦点; } 职位名称
我不喜欢在编写javascript时使用timeout,所以我会使用与Michiel Borkent相反的方法。没有尝试背后的代码,但你应该得到的想法

<input id="myInput" onblur="blured = this.id;"></input>
<span onfocus = "sortOfCallback(this.id)" id="mySpan">Hello World</span>
在头上,像这样的东西

<head>
    <script type="text/javascript">
        function sortOfCallback(id){
            bluredElement = document.getElementById(blured);
            // Do whatever you want on the blured element with the id of the focus element


        }

    </script>
</head>

我不喜欢在编写javascript时使用timeout,所以我会使用与Michiel Borkent相反的方法。没有尝试背后的代码,但你应该得到的想法

<input id="myInput" onblur="blured = this.id;"></input>
<span onfocus = "sortOfCallback(this.id)" id="mySpan">Hello World</span>
在头上,像这样的东西

<head>
    <script type="text/javascript">
        function sortOfCallback(id){
            bluredElement = document.getElementById(blured);
            // Do whatever you want on the blured element with the id of the focus element


        }

    </script>
</head>
我认为通过jquery传递字段的引用可以很容易地实现这一点,该字段导致了本文中的onblur事件。 例如

谢谢 莫妮卡 我认为通过jquery传递字段的引用可以很容易地实现这一点,该字段导致了本文中的onblur事件。 例如

谢谢
莫妮卡

你可以这样做:

<input id="myInput" onblur="function() { ... }"></input>
<span id="mySpan">Hello World</span>
<script type="text/javascript">
function myFunction(thisElement) 
{
    document.getElementByName(thisElement)[0];
}
</script>
<input type="text" name="txtInput1" onBlur="myFunction(this.name)"/>
const focusedElement = document.activeElement

你可以这样做:

<input id="myInput" onblur="function() { ... }"></input>
<span id="mySpan">Hello World</span>
<script type="text/javascript">
function myFunction(thisElement) 
{
    document.getElementByName(thisElement)[0];
}
</script>
<input type="text" name="txtInput1" onBlur="myFunction(this.name)"/>
const focusedElement = document.activeElement
2015回答:根据,您可以使用事件的属性:

用于识别与焦点相关的次焦点 事件,具体取决于事件的类型

对于事件

:接收焦点

例如:

函数blurListenerevent{ event.target.className=‘模糊’; ifevent.relatedTarget event.relatedTarget.className='focused'; } []forEach.calldocument.querySelectorAll'input',functionel{ el.addEventListener'blur',blurListener,false; }; .模糊{背景:橙色} .聚焦{背景:石灰} 模糊的元素将变成橙色

重点元素应该变成石灰

2015回答:根据,您可以使用事件的属性:

用于识别二级相关的 聚焦 事件,具体取决于事件的类型

对于事件

:接收焦点

例如:

函数blurListenerevent{ event.target.className=‘模糊’; ifevent.relatedTarget event.relatedTarget.className='focused'; } []forEach.calldocument.querySelectorAll'input',functionel{ el.addEventListener'blur',blurListener,false; }; .模糊{背景:橙色} .聚焦{背景:石灰} 模糊的元素将变成橙色

重点元素应该变成石灰

您可以通过以下方式修复IE:

 event.currentTarget.firstChild.ownerDocument.activeElement
它看起来像是FF的明确目标

Antoine和J

您可以通过以下方式修复IE:

 event.currentTarget.firstChild.ownerDocument.activeElement
它看起来像是FF的明确目标

Antoine和J

如中所述,您可以检查document.activeElement的值。文档是一个全局变量,因此在onBlur处理程序中使用它不需要做任何魔术:

function myOnBlur(e) {
  if(document.activeElement ===
       document.getElementById('elementToCheckForFocus')) {
    // Focus went where we expected!
    // ...
  }
}
如中所述,您可以检查document.activeElement的值。文档是一个全局变量,因此在onBlur处理程序中使用它不需要做任何魔术:

function myOnBlur(e) {
  if(document.activeElement ===
       document.getElementById('elementToCheckForFocus')) {
    // Focus went where we expected!
    // ...
  }
}
类型FocusEvent实例具有relatedTarget属性,但是,直到FF的版本47,具体地说,该属性返回null,从48开始已经工作

您可以查看更多信息。

类型FocusEvent实例具有relatedTarget属性,但是,直到FF的版本47,具体来说,该属性返回null,而48已经起作用

你可以看到更多。

我写了一篇关于如何使任何元素聚焦和模糊的文章

它的基础是将元素设置为可编辑的内容,并在视觉上隐藏它并禁用编辑模式本身:

el.addEventListener("keydown", function(e) {
  e.preventDefault();
  e.stopPropagation();
});

el.addEventListener("blur", cbBlur);
el.contentEditable = true;
注意:在Chrome、Firefox和Safari OS X中测试。不确定IE

相关:我正在寻找VueJs的解决方案,因此,对于那些感兴趣/好奇如何使用Vue Focusable指令实现此类功能的人,请参见。

我写了一篇如何使任何元素可聚焦和模糊的文章

它的基础是将元素设置为可编辑的内容,并在视觉上隐藏它并禁用编辑模式本身:

el.addEventListener("keydown", function(e) {
  e.preventDefault();
  e.stopPropagation();
});

el.addEventListener("blur", cbBlur);
el.contentEditable = true;
注意:在Chrome、Firefox和Safari OS X中测试。不确定IE

相关:我正在寻找VueJs的解决方案,因此对于那些感兴趣/好奇如何使用Vue Focusable指令实现此类功能的人,请

document.activeElement可以是父节点,例如body节点,因为它处于从一个目标切换到另一个目标的临时阶段,所以它不适用于您的范围 ev.explicitoringinaltarget并不总是有价值的 因此,最好的方法是使用onclick on body事件间接了解nodeevent.target处于模糊状态

document.activeElement可以是父节点,例如body节点,因为它处于从一个目标切换到另一个目标的临时阶段,所以它不适用于您的范围 ev.explicitoringinaltarget并不总是有价值的
因此,最好的方法是使用onclick on body事件间接了解您的nodeevent.target处于模糊状态

我只看到答案中的一些漏洞,但实际上有一个内置解决方案非常容易使用: 基本上,您可以像这样捕获焦点元素:

<input id="myInput" onblur="function() { ... }"></input>
<span id="mySpan">Hello World</span>
<script type="text/javascript">
function myFunction(thisElement) 
{
    document.getElementByName(thisElement)[0];
}
</script>
<input type="text" name="txtInput1" onBlur="myFunction(this.name)"/>
const focusedElement = document.activeElement

我在答案中只看到了一些漏洞,但实际上有一个内置的解决方案非常容易使用: 基本上,您可以像这样捕获焦点元素:

<input id="myInput" onblur="function() { ... }"></input>
<span id="mySpan">Hello World</span>
<script type="text/javascript">
function myFunction(thisElement) 
{
    document.getElementByName(thisElement)[0];
}
</script>
<input type="text" name="txtInput1" onBlur="myFunction(this.name)"/>
const focusedElement = document.activeElement

在Google Chrome v66.x、Mozilla v59.x和Microsoft Edge中工作。。。使用jQuery解决方案

我在Internet Explorer 9中测试,不受支持


在其他internet explorer版本中评论您的测试。

适用于Google Chrome v66.x、Mozilla v59.x和Microsoft Edge。。。使用jQuery解决方案

我在Internet Explorer 9中测试,不受支持



在其他internet explorer版本中评论您的测试。

这并没有回答问题,希望我用附加示例说明问题。这并没有回答问题,希望我用附加示例说明问题。这是一个有趣的问题,我希望看到背后的理据,即,您为什么这样做?背景是什么?Rahul和roosteronacid,我更新了这个问题,作为对您对PPS评论的回应。由于此信息有点旧,请参阅此处以获得更新的答案:这是一个有趣的问题,我希望看到背后的推理——即,您为什么要这样做?背景是什么?Rahul和roosteronacid,我更新了这个问题,作为对您在PPS上评论的回应。由于此信息有点旧,请参阅此处以获得更新的答案:我一直在寻找类似ExplicitoringinalTarget的内容。您是如何发现它的?检查了FireBug中的事件对象。FWIW,该属性是特定于Mozilla的,并记录在MDC上:这不起作用还是停止起作用?在Windows下的Firefox 3.6和Safari 4.0.3中。@Jonathan:该属性可用,但在触发模糊事件时不会更新。我已经用细节更新了答案。你在Chrome或Firefox中尝试过使用activeElement吗?它会让你的元素变得模糊…实际上不适用于FF 31:explic


itOriginalTarget显示当前的模糊目标,document.activeElement在模糊事件中为null。我一直在寻找类似explicitOriginalTarget的东西。您是如何发现它的?检查了FireBug中的事件对象。FWIW,该属性是特定于Mozilla的,并记录在MDC上:这不起作用还是停止起作用?在Windows下的Firefox 3.6和Safari 4.0.3中。@Jonathan:该属性可用,但在触发模糊事件时不会更新。我已经用细节更新了答案。你在Chrome或Firefox中尝试过使用activeElement吗?它会让你看到元素被模糊…实际上不在FF 31上工作:explicitOriginalTarget显示当前模糊目标,document.activeElement在模糊事件上为null。顺便说一句,这在javascript世界中被认为是不好的做法吗?老帖子,但我有同样的问题。不管怎样,这似乎是唯一能通过浏览器完成任务的方法。这个答案通过解决其他一些问题帮助了我的工作。。。谢谢你,迈克尔@这是一个糟糕的实现,因为它不是事件驱动的。你等了一定的时间,只希望已经足够长了。你等待的时间越长,你就越安全,但如果你不需要等待那么久,你将浪费更多的时间。可能有人使用的是非常旧/速度慢的设备,而这个超时时间还不够。不幸的是,我之所以来到这里,是因为这些事件并没有为我提供我所需要的信息,以确定是否在FireFox中单击了iframe,但它适用于所有其他浏览器。我现在很想使用这个方法,尽管这是一个糟糕的做法。这个问题很老了,可以追溯到2008年。与此同时,可能有更好的办法。你能试试2015年的答案吗?顺便说一句,这在javascript世界被认为是不好的做法吗?老帖子,但我有同样的问题。不管怎样,这似乎是唯一能通过浏览器完成任务的方法。这个答案通过解决其他一些问题帮助了我的工作。。。谢谢你,迈克尔@这是一个糟糕的实现,因为它不是事件驱动的。你等了一定的时间,只希望已经足够长了。你等待的时间越长,你就越安全,但如果你不需要等待那么久,你将浪费更多的时间。可能有人使用的是非常旧/速度慢的设备,而这个超时时间还不够。不幸的是,我之所以来到这里,是因为这些事件并没有为我提供我所需要的信息,以确定是否在FireFox中单击了iframe,但它适用于所有其他浏览器。我现在很想使用这个方法,尽管这是一个糟糕的做法。这个问题很老了,可以追溯到2008年。与此同时,可能有更好的办法。你能试试2015年的答案吗?这几乎是解决方案,但在onblur事件处理程序中,我已经需要知道单击了哪些项目,因此onblur上的超时为我做到了。这几乎是解决方案,但在onblur事件处理程序中,我已经需要知道单击了哪些项目,因此,onblur上的超时为我做了这件事。如果你知道这不是问题的答案,你误读了它,请相应地更新或删除它。如果你知道这不是问题的答案,你误读了它,请相应地更新或删除它。不适用于Chrome或Safari。可能无法与标准兼容程度更高的IE新版本配合使用。无法与Chrome或Safari配合使用。也许不能与更标准兼容的IE新版本一起工作。Firefox没有支持,但有一个问题:现在它有了。看。热爱网络社区,现在一切都变得简单多了。^很好的解决方案。不幸的是,如果接收焦点的目标不是输入元素,relatedTarget将返回null。如果接收焦点元素不是输入元素,请向其添加tabIndex=0属性,Firefox不支持它,但有一个票证:现在它有了。看。热爱网络社区,现在一切都变得简单多了。^很好的解决方案。不幸的是,如果接收焦点的目标不是输入元素,relatedTarget将返回null。如果接收焦点元素不是输入元素,请向其添加tabIndex=0属性,它将正常工作。这很好,为什么要向下投票?只需移除OriginaleEvent!这很好为什么要投否决票?只需移除OriginaleEvent!至少在我的例子中,这不起作用,因为activeElement是主体,如果我在下一次渲染/勾选时选中它,则它设置正确。但shog9的解决方案似乎是唯一正确的解决方案,因为它确保了勾号一直在滴答作响。至少在我的情况下,这不起作用,因为activeElement是主体,如果我在下一次渲染/勾号时选中它,它的设置是正确的。但shog9的解决方案似乎是唯一正确的解决方案,因为它确保了滴答声一直在滴答作响。