H5支持度检测常用模式(仅干货)

news/2025/3/15 1:25:28/

浏览器支持检测

 Modernizr库,不详讲
复制代码

canvas

  • 即使浏览器支持 canvas API,它也不一定支持 canvas text API,检测 canvas 同时还要检测 canvas text API
function supports_video() {return !!document.createElement('canvas').getContext
}
复制代码

video

  • 不支持video标签的浏览器会自动忽略,开发者需要用flash等技术替代
  • 检测技术来检测浏览器支持的视频格式
function supports_video() {if (!document.createElement('video').canPlayType) return false;// 常用几种视频格式,每一项是需要传给canPlayType函数的参数const videoTypes = ['video/mp4; codecs="avc1.42E01E, mp4a.40.2"','video/ogg; codecs="theora, vorbis"','video/webm; codecs="vp8, vorbis"',]const v = document.createElement("video");const res = {}videoTypes.forEach(item => {const _key = item.match(/\w+(?=\;)/)[0];res[_key] =  v.canPlayType(item);})return res
}<!--"probably":浏览器能够支持该格式视频;-->
<!--"maybe":浏览器可能能播放该格式视频;-->
<!--""(空字符串):浏览器不能播放该格式视频。-->运行结果:
{"mp4":"probably","ogg":"probably","webm":"probably"}
复制代码

本地存储

如果浏览器支持 HTML5 存储,那么全局的window对象将会有一个localStorage属性;否则该属性将会是undefined的,但是老版本火狐有个bug,如果 cookie 被禁用,会抛出异常
复制代码
function supports_local_storage() {try {return 'localStorage' in window && window['localStorage'] !== null;} catch(e){return false;}
}
复制代码

表单

  1. H5新增了多项表单的type值,检测支持type程度
function supports_input_type(type){if(typeof type !== 'string') return false<!--创建一个空表单元素-->const i = document.createElement('input')<!--为表单设置类型,如果支持就会显示对应的表单,如果不支持则默认type 为text-->i.setAttribute('type', type)如果传进来的为text类型,则返回支持,不然判断设置的type生效没,如果没生效 i.type 就会变为默认的text, 说明不支持return type === 'text' ? true : i.type !=='text'
}复制代码
  1. 检测placeholder、autofocus属性的兼容性
function supports_input_placeholder() {var i = document.createElement('input');return 'placeholder' in i;
}function supports_input_autofocus() {var i = document.createElement('input');return 'autofocus' in i;
}
复制代码

History API

“HTML5 history API 提供了一组标准函数,使得我们可以通过脚本维护浏览器历史。这个 API 的一部分——历史导航——在早期版本的 HTML 里面已经实现了。HTML5 新增加的部分是,增加浏览器历史的条目,响应用户使用后退按钮访问浏览器历史等等。这意味着 URL 现在仍然可以作为当前资源的唯一标识符,甚至在全部由脚本构成的应用程序中也是这样(这里是说,对于无需整页刷新的 AJAX 程序,URL 一般不能准确的标识出当前资源,因为你的页面不是整页刷新,URL 不会随着显示内容的不同而有不同。但是使用了 history API,我们就可以解决这一问题)。”

摘录来自: DevBean. “Dive Into HTML5 中文版。” iBooks.

function supports_history_api() {return !!(window.history && history.pushState);
}
复制代码

地理位置

function supports_geolocation() {return !!navigator.geolocation; //  注意是navigator
}
复制代码

其他通用模式

  • Web Workers
function supports_web_workers() {return !!window.Worker;
}
复制代码
  • applicationCache
function supports_offline() {return !!window.applicationCache;
}
复制代码

http://www.ppmy.cn/news/911448.html

相关文章

软件推荐之epub阅读器篇

软件推荐之epub阅读器篇 网络的发展日新月异&#xff0c;各类好玩有用的设备和软件层出不穷。我们使用的手机电脑从最开始的大砖块大部头&#xff0c;慢慢的转变为现在随用随带的笔记本电脑&#xff0c;轻薄大屏的台式电脑和小巧便携的智能手机。不仅如此&#xff0c;还有什么…

下载到的电子书格式是Mobi,这种格式能否在MAC电脑上打开?

网友提问&#xff1a; 下载到的电子书格式是Mobi&#xff0c;双击不能直接打开&#xff0c;求问这种格式在MAC电脑上如何打开&#xff1f; 极客Oscar&#xff1a; 这个格式最初是为适配亚马逊kindle而创造的&#xff0c;所以一般的电脑和手机系统是不能直接读取的。但目前一…

移动App测试--支持多种文件格式

军规10&#xff1a;支持多种文件格式 1.签订协议需要支持pdf 由于ios上,自带的iBooks支持打开PDF文件&#xff0c;所以其在App中打开PDF文件是可以被支持的&#xff1b;而安卓原生的操作系统并没有自带可以打开pdf的文件&#xff1b; 在app打开pdf文件时&#xff0c;一般都是…

python中int是什么的缩写_python中int是什么类型

python中的基本数据类型 1:虽然python中的变量不需要声明&#xff0c;但使用时必须赋值 整形变量 浮点型变量 字符型 2:可以一个给多个变量赋值&#xff0c;也可以多个给多个变量赋值 3:python3中有6个标准数据类型 Number(数字) *True1 *False0 *数值的除法(/)总是返回一个浮点…

军规10 支持多种文件格式

在ios操作系统上&#xff0c;由于自带的iBooks支持打开PDF文件&#xff0c;所以在APP中打开PDF文件是可以被支持的。而在Android设备上&#xff0c;原生Android操作系统并没有自带可以打开PDF的文件&#xff0c;所以在Android上&#xff0c;APP如果尝试打开PDF文件时会显示打开…

ios怎么创建html,iBooks Author:关于 HTML widget 创建

iBooks Author 支持 HTML5 widget(扩展名为 .wdgt)。 若要创建 iBooks Author 的 HTML widget&#xff0c;请使用文本编辑器或 Web 内容创建 app 创建下列文件&#xff1a;主要 HTML 文件&#xff1a;此文件是 widget 的主体部分。可以随意为其命名&#xff0c;但扩展名必须为“…

Prometheus实现钉钉报警

1、Prometheus实现钉钉报警 1.1 Prometheus环境 # my global config global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute…

如何使用Java开发高性能的分布式系统

写在前面&#xff1a; 随着现代应用需求的不断演进&#xff0c;传统的单体应用已经无法满足对高容量、高并发和高可用性的需求。为了应对这些挑战&#xff0c;分布式系统应运而生。简而言之&#xff0c;分布式系统是由多个计算机节点组成的系统&#xff0c;这些节点通过网络进…