gpt4 book ai didi

javascript - 移动到网页的第一个 'default' 焦点

转载 作者:太空狗 更新时间:2023-10-29 13:29:30 25 4
gpt4 key购买 nike

假设你有一个网站,当你刷新它时,如果你检查哪个元素有焦点,使用这个代码:

setInterval(function () {
console.log('ID: ', $(document.activeElement).attr('id') + ' Tag: ' + $(document.activeElement).prop('tagName')
+ ' C: ' + $(document.activeElement).attr('class'));
}, 2000);

您会看到元素的标签是“BODY”元素。你如何使用 javascript 将焦点恢复到同一元素,因为 $('body').focus(); 之类的东西不起作用。

编辑:它还应该重置文档的“焦点”流。因此,在您单击 TAB 后,它将聚焦相同的元素,就像您刷新页面然后单击 TAB 一样。

编辑 2: 我需要将对某些操作(如 keyDown)的焦点重置为默认状态 - 加载页面后的状态。根据我的研究,我知道加载页面后聚焦的元素是“正文”,然后在单击 Tab 后,网站焦点流中的第一个元素被聚焦。我不能使用 $('body').focus(); - 它不关注正文,也不重置文档的当前焦点流。

编辑 3: 到目前为止,我们已经设法使用以下代码以某种方式将焦点重新设置到网站的 body 元素:document.activeElement.blur(); 所以我上面的脚本会说 body 是焦点,但当您使用键盘导航网站(TAB 按钮)时,它不会重置当前焦点的实际流程。可以有解决方法并选择所需的指定元素,但这不是问题的答案。在不刷新页面的情况下将网站键盘导航流程重置为默认状态的通用机制是什么?

编辑 4: https://jsfiddle.net/4qjb5asw/5/

最佳答案

而不是专门关注 <body> , 您可以通过执行 document.activeElement.blur(); 来清除事件元素的焦点这应该将焦点恢复到 <body>元素并重置焦点流。

在下面的代码片段中单击以查看当前 document.activeElement 是什么是。

$("#reset").on("click", function() {
document.activeElement.blur();
logActiveElement();
});

$("form").children().on("focus", logActiveElement);

function logActiveElement() {
console.log("The active element is now: " + $(document.activeElement).prop('tagName'));
}
.blur {
padding: 5px;
border: 2px solid blue;
margin-top: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<input type="text" />
<textarea></textarea>
<button type="button">Test Button</button>
</form>

<div class="blur">
<button id="reset">RESET ACTIVE ELEMENT</button>
</div>

关于javascript - 移动到网页的第一个 'default' 焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51518855/

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