首页 > 其他分享 >js 焦点管理

js 焦点管理

时间:2024-02-06 23:01:16浏览次数:29  
标签:管理 焦点 加载 js 文档 HTML5 compatMode document 属性

HTML5 增加了辅助 DOM 焦点管理的功能。首先是 document.activeElement,始终包含当前拥

有焦点的 DOM 元素。页面加载时,可以通过用户输入(按 Tab 键或代码中使用 focus()方法)让某个元素自动获得焦点。例如:

```let button = document.getElementById("myButton");

button.focus();

console.log(document.activeElement === button); // true

默认情况下,document.activeElement 在页面刚加载完之后会设置为 document.body。而在页面完全加载之前,document.activeElement 的值为 null。

```

其次是 document.hasFocus()方法,该方法返回布尔值,表示文档是否拥有焦点:

```let button = document.getElementById("myButton");

button.focus();

console.log(document.hasFocus()); // true

```

确定文档是否获得了焦点,就可以帮助确定用户是否在操作页面。

第一个方法可以用来查询文档,确定哪个元素拥有焦点,第二个方法可以查询文档是否获得了焦点,而这对于保证 Web 应用程序的无障碍使用是非常重要的。无障碍 Web 应用程序的一个重要方面就是焦点管理,而能够确定哪个元素当前拥有焦点(相比于之前的猜测)是一个很大的进步。

HTMLDocument 扩展

HTML5 扩展了 HTMLDocument 类型,增加了更多功能。与其他 HTML5 定义的 DOM 扩展一样,这些变化同样基于所有浏览器事实上都已经支持的专有扩展。为此,即使这些扩展的标准化相对较晚,很多浏览器也早就实现了相应的功能。

1. readyState 属性

readyState 是 IE4 最早添加到 document 对象上的属性,后来其他浏览器也都依葫芦画瓢地支持这个属性。最终,HTML5 将这个属性写进了标准。document.readyState 属性有两个可能的值:

``` loading,表示文档正在加载;

 complete,表示文档加载完成。

```

实际开发中,最好是把 document.readState 当成一个指示器,以判断文档是否加载完毕。在这个属性得到广泛支持以前,通常要依赖 onl oad 事件处理程序设置一个标记,表示文档加载完了。这个属性的基本用法如下:

```if (document.readyState == "complete"){

// 执行操作

}

```

compatMode 属性

自从 IE6 提供了以标准或混杂模式渲染页面的能力之后,检测页面渲染模式成为一个必要的需求。

IE 为 document 添加了 compatMode 属性,这个属性唯一的任务是指示浏览器当前处于什么渲染模式。

如下面的例子所示,标准模式下 document.compatMode 的值是"CSS1Compat",而在混杂模式下,document.compatMode 的值是"BackCompat":

```if (document.compatMode == "CSS1Compat"){

console.log("Standards mode");

} else {

console.log("Quirks mode");

}

```

HTML5 最终也把 compatMode 属性的实现标准化了。

head 属性

作为对 document.body(指向文档的<body>元素)的补充,HTML5 增加了 document.head 属性,指向文档的<head>元素。可以像下面这样直接取得<head>元素:

```let head = document.head;

```HTML5 增加了辅助 DOM 焦点管理的功能。首先是 document.activeElement,始终包含当前拥 有焦点的 DOM 元素。页面加载时,可以通过用户输入(按 Tab 键或代码中使用 focus()方法)让某个元素自动获得焦点。例如:

button.focus(); 
console.log(document.activeElement === button); // true 
默认情况下,document.activeElement 在页面刚加载完之后会设置为 document.body。而在页面完全加载之前,document.activeElement 的值为 null。

其次是 document.hasFocus()方法,该方法返回布尔值,表示文档是否拥有焦点:

button.focus(); 
console.log(document.hasFocus()); // true

确定文档是否获得了焦点,就可以帮助确定用户是否在操作页面。 第一个方法可以用来查询文档,确定哪个元素拥有焦点,第二个方法可以查询文档是否获得了焦点,而这对于保证 Web 应用程序的无障碍使用是非常重要的。无障碍 Web 应用程序的一个重要方面就是焦点管理,而能够确定哪个元素当前拥有焦点(相比于之前的猜测)是一个很大的进步。 HTMLDocument 扩展 HTML5 扩展了 HTMLDocument 类型,增加了更多功能。与其他 HTML5 定义的 DOM 扩展一样,这些变化同样基于所有浏览器事实上都已经支持的专有扩展。为此,即使这些扩展的标准化相对较晚,很多浏览器也早就实现了相应的功能。

  1. readyState 属性 readyState 是 IE4 最早添加到 document 对象上的属性,后来其他浏览器也都依葫芦画瓢地支持这个属性。最终,HTML5 将这个属性写进了标准。document.readyState 属性有两个可能的值:
 complete,表示文档加载完成。

实际开发中,最好是把 document.readState 当成一个指示器,以判断文档是否加载完毕。在这个属性得到广泛支持以前,通常要依赖 onl oad 事件处理程序设置一个标记,表示文档加载完了。这个属性的基本用法如下:

// 执行操作
}

compatMode 属性 自从 IE6 提供了以标准或混杂模式渲染页面的能力之后,检测页面渲染模式成为一个必要的需求。 IE 为 document 添加了 compatMode 属性,这个属性唯一的任务是指示浏览器当前处于什么渲染模式。 如下面的例子所示,标准模式下 document.compatMode 的值是"CSS1Compat",而在混杂模式下,document.compatMode 的值是"BackCompat":

console.log("Standards mode"); 
} else { 
 console.log("Quirks mode"); 
}

HTML5 最终也把 compatMode 属性的实现标准化了。 head 属性 作为对 document.body(指向文档的元素)的补充,HTML5 增加了 document.head 属性,指向文档的元素。可以像下面这样直接取得元素:

标签:管理,焦点,加载,js,文档,HTML5,compatMode,document,属性
From: https://blog.51cto.com/u_16298172/9632586

相关文章

  • 基于Java+Neo4j开发的知识图谱+全文检索的知识库管理系统(源码分析)
    在数字化高度普及的时代,企事业机关单位在日常工作中会产生大量的文档,例如医院制度汇编,企业知识共享库等。针对这些文档性的东西,手工纸质化去管理是非常消耗工作量的,并且纸质化查阅难,易损耗,所以电子化管理显得尤为重要。【springboot+elasticsearch+neo4j+vue+activiti】实现数字......
  • 【nw.js】使用nw.js将html页面打包成exe免安装程序
    @[TOC]一、批处理zip命令(已有可跳过此步骤)下载zip,你可以到该网址下载zip执行文件,如下图:将文件路径配置到环境变量中,具体操作如下:右键计算机——>属性——>高级系统设置——>高级——>环境变量——>系统变量——>找到path,双击——>新建——>将所在路径添加进去(如:“F:\zip”包含进环......
  • 管理能力跟不上扩张规模,库迪正在拖垮自己?
    经过一年多时间的高速扩张后,连锁咖啡品牌库迪咖啡正在被联营商疯狂吐槽。小红书、抖音等各大平台,随便一搜,联营商对库迪的吐槽已经多如牛毛。比如两个联营商写了两封公开信,再比如有前员工爆料其所在门店存在物品混用、偷工减料等问题。近期又有不少库迪员工在小红书上爆料,揭露了库迪......
  • 2月摸鱼计划04 Go语言依赖管理
    2.0依赖管理这一章我们主要讲解go的依赖管理,主要涉及go依赖管理的演进路线和gomodule实践依赖指各种开发包对于helloworld以及类似的单体函数只需要依赖原生SDK,而实际工程会相对复杂,我们不可能基于标准库0~1编码搭建,而更多的关注业务逻辑的实现,而其他的涉及框架、日志、driver......
  • 磁盘管理二
    硬盘接口类型sata目前常见的接口方面又分为SATA、SAS、MSATA、M.2。sassas接口为企业级专业硬盘使用接口,满足高性能、高可靠性。以前还有SCSI接口,已经被sas接口取代了。关于硬盘的历史,主要是如下升级个人主机IDE(IntegratedDriveElectronics)传统级硬盘接口、被SATA取......
  • bcdedit是Windows操作系统中的一个命令行工具,用于查看和修改启动配置数据(BCD)。启动配
    bcdedit是什么bcdedit是Windows操作系统中的一个命令行工具,用于查看和修改启动配置数据(BCD)。启动配置数据存储重要的启动信息,包括启动加载程序和启动设置。这个工具主要由高级用户、系统管理员和开发人员使用,以调整与系统启动相关的各种参数。为什么使用bcdedit修改启动设置......
  • powercfg是一个Windows操作系统中的命令行工具,用于管理和配置电源设置。通过使用power
    powercfg是一个Windows操作系统中的命令行工具,用于管理和配置电源设置。通过使用powercfg命令,用户和系统管理员可以查询、更改、导出、导入电源计划设置,检查电池状态,以及分析系统能耗情况等。这个工具非常有用,尤其是在需要优化电池使用时间、调整电源计划以提高性能或节能时。为......
  • spring boot controller设置返回json
    在SpringBoot中,Controller通常会返回JSON格式的数据,这得益于SpringBoot的自动配置能力以及内嵌的Jackson库。以下是如何设置Controller返回JSON数据的基本步骤:添加依赖:首先,确保你的项目中包含了SpringBoot的WebStarter依赖,它已经包括了Jackson库,用于处理JSON序列化。<dependen......
  • 解决使用XYplorer代替系统资源管理器后无法打开控制面板的问题
    1.问题由于赋予了XYexplorer系统权限,每次打开一个文件夹都要提示是否允许来自未知发布者的此应用对你的设备进行更改,经查阅资料后采用以下方案:关闭win10安全警告但是出现新的问题:XYexplorer无法打开虚拟文件夹,如控制面板,垃圾回收站等等,当我们在此电脑中选择属性,会自动被XYplore......
  • 技术人员核心能力 -- 向上管理能力
    工作了很多年后才真正明白一些道理-在为谁工作?为谁效力?谁在买我们的劳动、时间、技术、能力?有些时候一直学习技术为主、有些时候就忙于一些手上的工作内容、如何让领导满意、如何得到领导认可、需要干哪些事情?平时关键精力应该要放在哪里?如何拿到产出?如何量化汇报?如何......