当您模糊DOM元素时会发生什么

Helifreak

我很难找到有关DOM元素模糊时发生的“假设”的任何文档。

我的幼稚假设是浏览器将遍历DOM来查找下一个可聚焦元素-但考虑到以下jsfiddle,显然不会发生这种情况。

jsfiddle-example

<!-- HTML ----------------------------- -->
<body>
    <div id="root" tabindex="0">root
        <div id="p1" tabindex="0">p1
            <div id="p2" tabindex="0">p2
            </div>
        </div>
    </div>

</body>

/* Javascript */
var root = document.getElementById("root");
var p1 = document.getElementById("p1");
var p2 = document.getElementById("p2");


root.addEventListener('keydown', function(event) {
    console.log("root keydown"); 
}, false);

p1.addEventListener('keydown', function(event) {
    console.log("p1 keydown"); 
}, false);

p2.addEventListener('keydown', function(event) {
    
    console.log("p2 keydown - blurring p2, hoping that focus will move up the dom to p1"); 
    event.stopPropagation();
    
    p2.blur();
    if (document.activeElement !== p1)
        console.log("well, that didn't work out so well :( ");
    console.log("focused element = ");
    console.log(document.activeElement);
    
}, false);



p2.focus();
console.log("focused element = ");
console.log(document.activeElement);

那么,应该定义什么呢?我发现Chrome发生了什么,就是activeElement跳到body-并跳过了所有可聚焦的项目。目前尚不清楚body是否被重点关注,或者仅是默认的处理程序来activeElement关注其他内容。

给定一个复杂的面向对象的Javascript应用程序,其中p2不了解p1,但是假设DOM中更高的任何内容都将得到关注,我真的想手动针对每个blur()事件遍历DOM并搜索可关注的元素,我自己集中精力?

Jukka K.Korpela

与此规范最接近的事情可能是HTML5 CR中焦点描述(正在进行中,“一个文档草案,随时可能被其他文档更新,替换或淘汰”),但实际上与共识)。它说:“可能没有重点。如果没有元素集中,则文档收到的关键事件必须以body元素(如果有)为目标,否则必须以Document的根元素(如果有)为目标。如果没有根元素,则不能触发关键事件。”

由于该blur()方法仅在移出焦点时(在DOM 2 HTML规范中)被定义,因此意味着将页面保持在没有任何元素被聚焦的状态。但是,这看起来好像是该body元素被集中了:例如,如果您有一个keypress属性,它就会被触发。但是,这与聚焦状态不同。例如,在这种情况下,该body元素与CSS选择器不匹配:focus

结论是,您通常应该避免使用blur()focus()处理一些合适的可聚焦元素,如其他答案所示。一个例外是您只想放弃所有键盘事件的情况。然后blur(),如果您的代码未将任何键盘事件处理程序分配给该body元素,则OK

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当您用尽PID时会发生什么?

来自分类Dev

当您从boost :: fibonacci_heap删除元素时会发生什么?

来自分类Dev

当您从《虚无》中抽奖时会发生什么?

来自分类Dev

当您打开/关闭手柄时会发生什么?

来自分类Dev

当您移到非右值参考时会发生什么?

来自分类Dev

当您使用浏览器返回时会发生什么?

来自分类Dev

当您“不安装而尝试Ubuntu”时会发生什么?

来自分类Dev

当您调用包含yield的函数时会发生什么?

来自分类Dev

当您从C ++函数返回引用时会发生什么?

来自分类Dev

当您“不安装而尝试Ubuntu”时会发生什么?

来自分类Dev

当您仅实例化“ new objectName()”时会发生什么

来自分类Dev

暂停时会发生什么?

来自分类Dev

在视觉上,当您使用&符号调用同一进程时会发生什么

来自分类Dev

当您重新声明angular中的现有指令时会发生什么?

来自分类Dev

当您使用Task.Run太多而导致线程池耗尽时会发生什么?

来自分类Dev

当您从函数返回JavaScript语句时会发生什么,例如return console.log(“ Hello”)

来自分类Dev

当您使用多个嵌套作用域时会发生什么?

来自分类Dev

当您合并不同形状的喀拉拉邦分支时会发生什么?

来自分类Dev

当您写入具有相同配置的寄存器时会发生什么?

来自分类Dev

当您清除Android应用程序的存储空间时会发生什么情况

来自分类Dev

当您溢出iOS应用程序的Documents目录时会发生什么?

来自分类Dev

当您使用范围通道中断for语句时会发生什么

来自分类Dev

当您通过指针传递将内存地址传递给函数时会发生什么?

来自分类Dev

当您产生一个activerecord对象时会发生什么?

来自分类Dev

当您强制退出两个磁盘之间的`mv`目录操作时会发生什么?

来自分类Dev

当您传递android systemclock.sleep(long)一个负参数时会发生什么

来自分类Dev

在正则表达式中,当您向。+添加问号时会发生什么变化

来自分类Dev

当您使用jquery更改img标签的src时会发生什么?

来自分类Dev

当您同时触摸两个按钮时会发生什么

Related 相关文章

  1. 1

    当您用尽PID时会发生什么?

  2. 2

    当您从boost :: fibonacci_heap删除元素时会发生什么?

  3. 3

    当您从《虚无》中抽奖时会发生什么?

  4. 4

    当您打开/关闭手柄时会发生什么?

  5. 5

    当您移到非右值参考时会发生什么?

  6. 6

    当您使用浏览器返回时会发生什么?

  7. 7

    当您“不安装而尝试Ubuntu”时会发生什么?

  8. 8

    当您调用包含yield的函数时会发生什么?

  9. 9

    当您从C ++函数返回引用时会发生什么?

  10. 10

    当您“不安装而尝试Ubuntu”时会发生什么?

  11. 11

    当您仅实例化“ new objectName()”时会发生什么

  12. 12

    暂停时会发生什么?

  13. 13

    在视觉上,当您使用&符号调用同一进程时会发生什么

  14. 14

    当您重新声明angular中的现有指令时会发生什么?

  15. 15

    当您使用Task.Run太多而导致线程池耗尽时会发生什么?

  16. 16

    当您从函数返回JavaScript语句时会发生什么,例如return console.log(“ Hello”)

  17. 17

    当您使用多个嵌套作用域时会发生什么?

  18. 18

    当您合并不同形状的喀拉拉邦分支时会发生什么?

  19. 19

    当您写入具有相同配置的寄存器时会发生什么?

  20. 20

    当您清除Android应用程序的存储空间时会发生什么情况

  21. 21

    当您溢出iOS应用程序的Documents目录时会发生什么?

  22. 22

    当您使用范围通道中断for语句时会发生什么

  23. 23

    当您通过指针传递将内存地址传递给函数时会发生什么?

  24. 24

    当您产生一个activerecord对象时会发生什么?

  25. 25

    当您强制退出两个磁盘之间的`mv`目录操作时会发生什么?

  26. 26

    当您传递android systemclock.sleep(long)一个负参数时会发生什么

  27. 27

    在正则表达式中,当您向。+添加问号时会发生什么变化

  28. 28

    当您使用jquery更改img标签的src时会发生什么?

  29. 29

    当您同时触摸两个按钮时会发生什么

热门标签

归档