H5新增API

本文介绍了HTML5中几个常用对象。Location对象是window对象一部分;Navigator对象包含浏览器信息,可通过第三方API获取地理位置,还能检测网络状态;History对象包含访问过的URL,有back、forward等方法及pushState、replaceState等操作;Files对象可用于文件读取,借助FileReader对象实现。

1. Location对象

location 对象是 window 对象的一部分,可通过window.location属性对其进行访问。

属性

名称释义
origin返回页面来源的域(当前协议 + 主机名+端口号)
host返回一个URL的主机名和端口
hostname返回URL的主机名
port返回一个URL服务器使用的端口号
pathname返回的URL路径名。
protocol返回一个URL协议
href返回完整的URL
hash返回从井号 (#) 开始的 URL(锚)
search返回从问号 (?) 开始的 URL(查询部分)

方法

属性描述
assign()加载新的文档。跟href一样,可以跳转页面
replace()用新的文档替换当前文档。替换当前页面,不记录历史,不可以后退
reload()重新加载当前文档。

 

2. Navigator对象

navigator 对象是包含有关浏览器的信息。

window.navigator 接口表示用户代理的状态和标识。

navigator 对象包含有关浏览器的信息,它有很多属性,我们最常用的是 userAgent,该属性可以返回由客户机发送服务器的 user-agent 头部的值。

下面前端代码可以判断用户那个终端打开页面,实现跳转。

if((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
    window.location.href = "";     //跳转到手机端的页面
 } else {
    window.location.href = "";     //跳转到pc端的页面
 }

扩展阅读:

浏览器的User-Agent

浏览器的小故事

2.1 通过第三方API获取

HTML5中提供了一个Navigator.geolocation可以获取地理位置,但是由于兼容性太差,所以在这我们不过多给同学讲解。

在现实开发中,通过调用第三方API(如百度地图)来实现地理定位信息,这些API都是基于用户当前位置的,并将用位置位置(经/纬度)当做参数传递,就可以实现相应的功能。

百度地图开放平台 | 百度地图API SDK | 地图开发 百度地图api,调用百度API进行地图设置

2.2 Navigator.onLine网络状态

onLine 属性是一个只读的布尔值,声明了系统是否处于脱机模式,如果系统属于脱机状态,则返回 false,否则返回 true。

if (navigator.onLine) {
  alert('online')
} else {
  alert('offline');
}

HTML5 也给我们提供了2个事件 online 和 offline,给window绑定事件--检测网络开始状态

window.ononline = function() {
    console.log('你的浏览器在线工作');
};
window.onoffline = function() {
    console.log('你的浏览器离线工作');
}

3. History对象

History 对象包含用户(在浏览器窗口中)访问过的 URL。

History 对象是 window 对象的一部分,可通过 window.history 属性对其进行访问。

属性

属性描述
length返回浏览器历史列表中的 URL 数量。
state返回浏览器在当前 URL 下的状态信息,如果没有调用过 pushState() 或 replaceState() 方法,则返回默认值 null。

方法

方法描述
back()加载 history 列表中的上一个 URL。
forward()加载 history 列表中的下一个 URL。
go()加载 history 列表中的某个具体页面。其中go()参数为正值前进,参数为负值后退,为0刷新页面
pushState()用于在历史中添加一条记录。
replaceState()用来修改 History 对象的当前记录,其他都与pushState()方法一模一样。

3.1 History.back()、History.forward()、History.go()

这三个方法用于在浏览历史之中切换。

  • History.back():切换到上一个网址,等同于点击浏览器的后退键。对于第一个访问的网址,该方法无效果。

  • History.forward():切换到下一个网址,等同于点击浏览器的前进键。对于最后一个访问的网址,该方法无效果。

  • History.go():接受一个整数作为参数,以当前网址为基准,移动到参数指定的网址,比如go(1)相当于forward(),go(-1)相当于back()。如果参数超过实际存在的网址范围,该方法无效果;如果不指定参数,默认参数为0,相当于刷新当前页面。

注意,切换到以前访问过的页面时,页面通常是从浏览器缓存之中加载,而不是重新要求服务器发送新的网页。

3.2 History.pushState()

History.pushState()方法是html5中新增无刷新修改URL,用于在历史中添加一条记录。

window.history.pushState(state, title, url)
//读出状态对象
console.log(history.state)

该方法接受三个参数,依次为:

  • state:一个与添加的记录相关联的状态对象,浏览器会将这个对象序列化以后保留在本地,重新载入这个页面的时候,可以拿到这个对象。如果不需要这个对象,此处可以填null。

  • title:新页面的标题。不需要时可以填空字符串。

  • url:新的网址,必须与当前页面处在同一个域。浏览器的地址栏将显示这个网址。

3.3 History.replaceState()

History.replaceState()方法用来修改 History 对象的当前记录,其他都与pushState()方法一模一样。 假定当前网页是example.com/example.html。

history.pushState({page: 1}, 'title 1', '?page=1')
// URL 显示为 http://example.com/example.html?page=1

总结:

相同点:(1)共同的参数,(2)不会刷新页面只是修改或喜欢历史记录。

不同点:pushState会在history中添加一个新的记录( replace不会添加新的history记录,而是替换当前的url。

4. Files对象(文件读取)

怎么上传文件显示到页面? 或者 上传完毕图片显示缩略图到页面上。。。

通过FileReader对象我们可以读取本地存储的文件,使用 File 对象来指定所要读取的文件或数据。其中File对象可以是来自用户在一个元素上选择文件后返回的FileList 对象。

4.1 Files对象

由于HTML5中我们可以通过为表单元素添加multiple属性,因此我们通过<input>上传文件后得到的是一个Files对象(伪数组形式)。

4.2 FileReader对象

HTML5新增内建对象,可以读取本地文件内容。

var reader = new FileReader(); 可以实例化一个对象

实例方法

1、reader.readAsDataURL():DataURL形式读取文件

2、reader.readAsText():读取文件根据特殊的编码格式转化为内容(字符串形式)

事件监听

onload 当文读取完成时调用

属性

reader.result 文件读取结果

参考资料

FileReader - Web API 接口参考 | MDN

<think>嗯,用户让我介绍一下HTML5新增特性。首先,我需要回忆一下HTML5的主要更新内容,确保信息准确。HTML5是在2014年正式发布的,作为HTML的第五次重大修订,带来了很多新功能和改进。 首先,我应该分几个大类来组织内容,这样结构清晰。常见的分类包括语义化标签、多媒体支持、图形与动画、本地存储、Web性能、表单增强、API支持以及兼容性和标准化。 语义化标签是HTML5的重要部分,比如header、footer、article这些标签,它们帮助搜索引擎和屏幕阅读器更好地理解页面结构。然后是多媒体的支持,比如video和audio标签,之前需要Flash,现在原生支持了。 图形和动画方面,canvas和svg的支持,尤其是canvas可以用来做游戏或者数据可视化。本地存储部分,localStorage和sessionStorage比cookie更好用,存储容量更大,还有IndexedDB适合更复杂的数据。 Web性能优化方面,Web Workers可以在后台运行脚本,避免阻塞主线程。表单增强包括新的输入类型和属性,比如email、date,还有placeholder和autocomplete这些属性,提升用户体验。 API方面,地理位置、拖放API、WebSocket这些都很重要,尤其是WebSocket实现了全双工通信,适合实时应用。兼容性和标准化方面,HTML5统一了文档声明,简化了语法,比如标签可以不闭合,引号可省略,但最好还是保持规范写法。 需要检查是否有遗漏的重要特性,比如Web Storage、WebSocket、语义化标签这些确实是核心内容。还要注意用户可能需要实际应用的例子,比如在代码中使用video标签,或者localStorage的方法。不过用户没有要求代码示例,所以可能不需要深入,但提到相关API时可以简单说明用途。 需要确保每个特性解释清楚,但不过于冗长。比如在表单增强部分,除了新的输入类型,还有表单验证属性如required和pattern,这些对前端开发很有帮助。 最后,确保回答结构清晰,分点列出,每个大类下有子项,帮助用户逐步了解。可能用户是前端开发者,或者刚入门的学习者,需要全面但易懂的介绍。要避免技术术语过于复杂,同时保持专业性。 检查是否有错误,比如Web Workers属于性能优化,正确。离线应用通过缓存manifest文件,不过现在Service Worker更常用,但HTML5中可能还是提到应用缓存。不过有些特性已经被现代API取代,但作为介绍HTML5,还是需要按标准内容来。 总结下来,分八个主要部分,每个部分列出关键特性,用简短的说明,确保覆盖主要新增内容,结构清晰,语言准确。</think>HTML5HTML的第五次重大修订,于2014年正式发布。以下是其核心新增特性的分步解析: --- ### 一、语义化标签 1. **结构化标签** - `<header>` `<footer>`:定义页眉/页脚 - `<nav>`:导航栏 - `<article>`:独立内容块(如博客文章) - `<section>`:文档中的逻辑分区 - `<aside>`:侧边栏或附属内容 2. **媒体内容标签** - `<figure>` `<figcaption>`:标注图片/图表 - `<time>`:定义时间或日期 --- ### 二、多媒体支持 1. **原生音视频** - `<video>` `<audio>`标签直接嵌入媒体 - 支持格式:MP4、WebM、Ogg(视频);MP3、WAV(音频) - 示例: ```html <video controls> <source src="video.mp4" type="video/mp4"> </video> ``` --- ### 三、图形与动画 1. **`<canvas>`绘图** - 通过JavaScript实现动态2D/3D图形 - 常用于数据可视化、游戏开发 2. **SVG支持** - 矢量图形直接嵌入,支持缩放不失真 --- ### 四、本地存储 1. **Web Storage** - `localStorage`:永久存储(需手动清除) - `sessionStorage`:会话级存储(关闭标签页失效) 2. **IndexedDB** - 客户端数据库,支持复杂数据存储 --- ### 五、Web性能优化 1. **Web Workers** - 后台运行JavaScript,避免阻塞主线程 2. **应用缓存** - 通过`manifest`文件实现离线访问 --- ### 六、表单增强 1. **新输入类型** - `email` `url` `date` `color` `range`等 2. **表单验证** - `required`必填字段 - `pattern`正则校验 - `placeholder`输入提示 --- ### 七、API支持 1. **地理位置** - `Geolocation API`获取用户位置 2. **拖放操作** - `Drag and Drop API`实现元素拖放 3. **实时通信** - `WebSocket`全双工通信协议 --- ### 八、兼容性与标准化 1. **统一文档声明** - 简化的`<!DOCTYPE html>` 2. **语法宽松性** - 允许标签不闭合、属性不加引号(但建议规范写法) --- ### 总结 HTML5通过语义化标签、多媒体原生支持、本地存储等特性,显著提升了Web应用的功能和性能,同时推动开发标准化。这些改进为现代Web开发(如响应式设计、跨平台应用)奠定了核心基础。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值