JS对不同浏览器的检测问题

Navigator对象也称浏览器对象,该对象包含了浏览器的整体信息,如浏览器名称,版本号等。Navigator对象由Navigator浏览器率先使用,后来各方浏览器都开始支持Navigator对象,逐步成为一种标准。

一、Navigator对象的属性

以大多数浏览器都支持的版本为例,其属性有如下:

属性

说明

appName

返回浏览器的名称

appVersion

返回浏览器的版本号

userAgent

返回浏览器用于HTTP请求的用户代理头的值

appCodeName

返回浏览器的代码名

platform

返回运行浏览器的操作系统或硬件平台

例如,使用Navigator对象将浏览器的名称和版本号等打印出来。

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>无标题文档</title>

</head>

<body bgcolor="#ffffff" onLoad="whatBrowser()">

<SCRIPT>

<!-- Begin

function whatBrowser() {

document.Browser.Name.value=navigator.appName;

document.Browser.Version.value=navigator.appVersion;

document.Browser.Code.value=navigator.appCodeName;

document.Browser.Agent.value=navigator.userAgent;

}

</SCRIPT>

<FORM NAME="Browser">

你的浏览器名称: <INPUT TYPE="txt" NAME="Name" Size="45"><br />

你的浏览器信息: <INPUT TYPE="txt" NAME="Version" Size="45"><br />

你的浏览器密码信息:<INPUT TYPE="txt" NAME="Code" Size="45"><br />

使用信息: <INPUT TYPE="txt" NAME="Agent" Size="45"><br />

</FORM>

</body>

</html>

运行后,显示的结果为:

二、浏览器对象的子对象

Navigator对象的mimeTypes属性返回的是包含mimeType对象的数组,plugins属性返回的是包含Plugin对象的数组。因此,mimeType对象和Plugin对象是Navigator对象的子对象。

(一) mimeType对象

mimeType对象所代表的浏览器支持MIME类型数据格式,如属性如下:

属性

说明

description

返回对mimeType对象描述

enabledPlugin

返回一个数组,数组中的元素为Plugincf对象,该数组用于那些有插件支持的数据格式,如果没有,则返回null

suffixes

返回MIME类型文件的扩展名,如果有多个扩展名,则用逗号隔开

type

返回MIME类型的名称,该名称是唯一个可以用来描述当前MIME类型的字符串

由于Navigator对象的mimeTypes属性返回值是一个数组,因此,可以使用以下代码得到mimeType对象。

navigator.mimeTypes[i]

navigator.mimeTypes[“typename”]

(二)Plugin对象

Plugin对象用来描述浏览器所安装的插件,可以通过如下语句来获得:

navigator.plugins[i]

navigator. plugins[“typename”]

Plugin对象的属性如下:

属性

说明

description

插件的说明,由插件的创建者提供,用于说明插件的功能、厂商信息和版本信息等

filename

插件程序的文件名,不同的操作系统下,文件可能不同

length

插件所支持的MIME数组格式的个数,即该插件支持多少种数据格式

name

插件的名称

三、检测浏览器是否支持某些特性

要检测某些函数和属性在当前浏览器上是否存在,最简单的方法是使用typeof操作符。

例如,检测当前浏览器是否支持XMLHttpRequest类,代码如下:

var xmiExiests=typeof XMLHttpRequest;

如果返回的是undefined,则表示当前浏览器不支持XMLHttpRequest类。

四、检测当前浏览器是处于标准模式还是Qurks模式

通过读取document.compatMode属性,可以确定浏览器在处理文档时使用的是标准模式还是Quirks模式,可以用以下代码进行检测。

function QuirksMode(){

    if(typeof document.compatMode!=”undefined” && CSS.Compat/.text(doucment.compatMode)){

}

     return true;

}

如果文档使用Quirks模式渲染的,那么将返回True,否则将返回false。至于使用哪种模式,也会在DOCTYPE声明中体现出来,没有DOCTYPE的HTML文档,将自动按照Quirks模式进行处理。但是,有DOCTYPE声明并不意味着文档一定按Quirks模式渲染,它还与CSS规则有关,因此需要在CSS进行适当的处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1550303.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

HttpClientHandler 详解及使用

在现代网络编程中&#xff0c;HttpClientHandler 是一个至关重要的组件&#xff0c;它提供了对 HTTP 请求的底层配置和控制。本文将详细介绍 HttpClientHandler 的核心概念、配置选项以及如何在实际应用中使用它。 1. 什么是 HttpClientHandler&#xff1f; HttpClientHandle…

mongodb光速上手

开始 mongodb是一种nosql数据库&#xff0c;即非关系型数据库。 安装好后将bin目录添加到环境变量。 安装studio-3t&#xff0c;这是可视化编辑器。 启动 mongo --host localhost --port 27017 指令 查看所有库 show dbs 使用或创建并使用库 use school use 数据库名 向…

引入 LangChain4j 来简化 LLM 与 Java 应用程序的集成

作者&#xff1a;来自 Elastic David Pilato LangChain4j 框架于 2023 年创建&#xff0c;其目标如下&#xff1a; LangChain4j 的目标是简化将 LLM 集成到 Java 应用程序的过程。 LangChain4j 提供了一种标准方法&#xff1a; 根据给定内容&#xff08;例如文本&#xff09;创…

【Lcode 随笔】C语言版看了不后悔系列持续更新中。。。

文章目录 题目一&#xff1a;爬楼梯问题描述&#xff1a;题目分析&#xff1a;解题思路&#xff1a;示例代码&#xff1a;深入剖析&#xff1a; 题目二&#xff1a;打家劫舍问题描述&#xff1a;题目分析&#xff1a;解题思路&#xff1a;示例代码&#xff1a;深入剖析&#xf…

什么是数字化转型?数字化转型对企业有哪些优势?

一、什么是数字化转型&#xff1f; 定义&#xff1a; 数字化转型是指企业或组织将传统业务转化为数字化业务&#xff0c;利用人工智能、大数据、云计算、区块链、5G等数字技术提升业务效率和质量的过程。通俗来说&#xff0c;就是将数字技术应用到企业的各个方面&#xff0c;…

【C语言软开面经】

C语言软开面经 malloc calloc realloc free动态分配内存malloccalloc函数&#xff1a;realloc 函数&#xff1a;free函数&#xff1a; 堆栈-内存分区栈区&#xff08;Stack&#xff09;&#xff1a;堆区&#xff08;Heap&#xff09;&#xff1a;全局&#xff08;静态&#xff…

windows下安装rabbitMQ并开通管理界面和允许远程访问

如题&#xff0c;在windows下安装一个rabbitMQ server&#xff1b;然后用浏览器访问其管理界面&#xff1b;由于rabbitMQ的默认账号guest默认只能本机访问&#xff0c;因此需要设置允许其他机器远程访问。这跟mysql的思路很像&#xff0c;默认只能本地访问&#xff0c;要远程访…

【C++前缀和 动态规划 博弈】1140. 石子游戏 II|2034

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 C动态规划 博弈&#xff1a;往往后续状态已知&#xff0c;前续状态未知 LeetCode1140. 石子游戏 II Alice 和 Bob 继续他们的石子游戏。许多堆石子 排成一行&#xf…

android SELinux权限适配

抓log方法&#xff0c; setenforce 0, 如果不先将selinux设置为permission mode&#xff0c;会导致一个问题。 程序运行的时候遇到权限策略限制&#xff08;假设 sepolicy 1&#xff09;&#xff0c;程序运行失败。添加权限&#xff08;sepolicy 1&#xff09;&#xff0c;然后…

如何将音频转换成mp3?5个宝藏音频转换的方法,学起来!

音频文件已成为我们日常生活中不可或缺的一部分&#xff0c;无论是聆听喜爱的音乐、学习语言课程&#xff0c;还是录制会议内容&#xff0c;音频都扮演着重要角色。然而&#xff0c;随着音频格式的多样化&#xff0c;我们常常会遇到格式不兼容的问题&#xff0c;尤其是在需要将…

【完-网络安全】Windows注册表

文章目录 注册表启动项及常见作用五个根节点常见入侵方式 注册表 注册表在windows系统的配置和控制方面扮演了一个非常关键的角色&#xff0c;它既是系统全局设置的存储仓库&#xff0c;也是每个用户的设置信息的存储仓库。 启动项及常见作用 快捷键 WinR打开运行窗口&#x…

大模型增量训练--基于transformer制作一个大模型聊天机器人

针对夸夸闲聊数据集&#xff0c;利用UniLM模型进行模型训练及测试&#xff0c;更深入地了解预训练语言模型的使用方法&#xff0c;完成一个生成式闲聊机器人任务。 项目主要结构如下&#xff1a; data 存放数据的文件夹 dirty_word.txt 敏感词数据douban_kuakua_qa.txt 原始语…

ubuntu18.04安装教程

window分区 制作启动盘 插入 按F12进入启动选项页面&#xff0c;选择usb启动 选择install ubuntu 进入安装页面 选择中文&#xff08;简体&#xff09; 键盘布局选择英语&#xff08;美国&#xff09; 选择正常安装 等一小会儿 选择其他选项 分区 包括500mb系统分区 1000…

HuggingChat macOS版正式发布!文章内附体验地址!我国打造糖尿病专用AI模型|AI日报

文章推荐 全新豆包AI视频模型发布&#xff01;实测下的可灵与豆包&#xff01;原来它们的差距不止一点点... 今日热点 我国团队打造糖尿病专用AI模型 上海交通大学清源研究院MIFA实验室携手复旦大学附属中山医院内分泌科&#xff0c;组建专家团队&#xff0c;联手开发一款名…

[sql-04] 连续出现至少三次的数字

数据准备 CREATE TABLE leecode_01 (id bigint not null AUTO_INCREMENT,num int DEFAULT NULL COMMENT 用户名,primary key(id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT leecode(连续出现3次的数字)insert into leecode_01(num) values(12); insert into leecode_01…

大二极限编程社团纳新

大二极限编程社团纳新 组题人&#xff1a;徐苏洋 考试时间&#xff1a;9月29日 18&#xff1a;30 - 10月2日 22&#xff1a;00 中抽取任意4小时答题 请大家写程序时打开录屏软件 EV 10月2日23&#xff1a;00 后未提交至钉钉群众默认放弃比赛&#xff0c;成绩为0分 具体分数以最…

题库系统平台开发功能解析

题库系统开发功能介绍可以从多个方面进行阐述&#xff0c;以下是一些核心功能及其详细解释 1. 题库管理系统 题目录入与编辑&#xff1a;提供灵活的题目录入方式&#xff0c;支持手动输入、批量导入&#xff08;如从Excel、Word等文件中导入&#xff09;以及从其他题库中复制试…

PHP程离禁用一段IP的写法示例

PHP程离禁用一段IP的写法示例 。 在PHP中&#xff0c;如果你想禁用一段IP地址的访问&#xff0c;你可以使用$_SERVER[REMOTE_ADDR]来获取访问者的IP地址&#xff0c;然后通过判断IP地址是否在你想要禁用的范围内来决定是否拒绝服务。 以下是一个简单的例子&#xff0c;展示了…

【从0开始搭建微服务并进行部署】SpringBoot+dubbo+zookeeper

文章目录 说明环境搭建创建项目父模块设置子模块 dubbo-api子模块 dubbo-provider子模块 dubbo-consumer测试项目 docker部署项目完整项目地址 说明 jdk1.8SpringBoot2.x低版本dubbo&#xff1a;请查看之前教程【微服务】SpringBootDubboZooKeeper 实战 关于本教程将采用jdk1…

关系模型与关系代数——数据库原理 总结2

2.1 关系模型 关系数据结构 关系模型的数据结构是二维表&#xff0c;亦称为关系。关系数据库是表的集合&#xff0c;即关系的集合。表是一个实体集&#xff0c;一行就是一个实体&#xff0c;它由有关联的若干属性的值所构成。 关系模型的相关概念 列就是数据项 或 字段 或 属…