Rumah hujung hadapan web tutorial js Contoh kod JavaScript untuk mengesan pelayar yang digunakan oleh kemahiran user_javascript

Contoh kod JavaScript untuk mengesan pelayar yang digunakan oleh kemahiran user_javascript

May 16, 2016 pm 03:01 PM
javascript js Pengesanan pelayar

能力检测
在编写代码之前先检测特定浏览器的能力。例如,脚本在调用某个函数之前,可能要先检测该函数首付存在。这种检测方法将开发人员从考虑具体的浏览器类型和版本中解放出来,让他们把注意力集中到相应的能力是否存在上。能力检测无法精确地检测特定的浏览器和版本。

怪癖检测
怪癖实际上是浏览器实现中存在的bug,例如早期的webkit中就存在一个怪癖,即它会再for-in循环中返回被隐藏的属性。怪癖检测通常涉及到运行一段代码,然后确定浏览器是否存在某个怪癖。由于怪癖检测无法精确地检测特定的浏览器和版本。

用户代理检测
通过检测用户代理字符串来识别浏览器。用户代理字符串中包含大量与浏览器有关的信息,包括浏览器、平台、操作系统及浏览器版本。用户代理字符串有过一段相当长的发展历史,在此期间,浏览器提供商视图通过在用户代理字符串总添加一些欺骗性信息,欺骗网站详细自己的浏览器是另外一种浏览器。用户代理检测需要特殊的技巧,特别是要注意Opera会隐瞒其用户代理字符串的情况。即便如此,通过用户代理字符串仍然能够检测出浏览器所用的呈现引擎以及所在的平台,包括移动设备和游戏系统。

在每一次HTTP请求过程中,用户代理字符串是作为响应首部发送的,而且该字符串可以通过Javascript的navigator.userAgent属性访问。在服务器端,通过检测用户代理字符串来确定用户使用的浏览器是一种常用而且广为接受的做法。而在客户端,用户代理检测一般被当作一种万不得已的做法,其优先级排在能力检测和怪癖检测之后。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

var client = function(){

 // 呈现引擎

 var engine = {

  ie:0,

  gecko:0,

  webkit:0,

  khtml:0,

  opera:0,

 

  // 完整的版本号

  ver:null

 };

 

 // 浏览器

 var browser = {

  // 主要浏览器

  ie:0,

  firefox:0,

  safari:0,

  konq:0,

  opera:0,

  chrome:0,

 

  // 具体的版本号

  ver:null

 };

 

 // 检测呈现引擎和浏览器

 var ua = navigator.userAgent;

 if (window.opera) {

  engine.ver = browser.ver = window.opera.version();

  engine.opera = browser.opera = parseFloat(engine.ver);

 } else if (/AppleWebKit\/(\S+)/.test(ua)) {

  engine.ver = RegExp["$1"];

  engine.webkit = parseFloat(engine.ver);

 

  // 确定是Chrome还是Safari

  if (/Chrome\/(\S+)/.test(ua)) {

   browser.ver = RegExp["$1"];

   browser.chrome = parseFloat(engine.ver);

  } else if (/Version\/(S+)/.test(ua)) {

   browser.ver = RegExp["$1"];

   browser.safari = parseFloat(browser.ver);

  } else {

 

   // 近似地确定版本号

   var safariVersion = 1;

   if (engine.Webkit <100) {

    safariVersion = 1;

   } else if (engine.webkit < 312) {

    safariVersion = 1.2;

   } else if (engine.webkit < 412) {

    safariVersion = 1.3;

   } else {

    safariVersion = 2;

   }

 

   browser.safari = browser.ver = safariVersion;

  }

 } else if (/KHTML\/(S+)/.test(ua) || /Konqueror\/([^;]+)/.test(ua)) {

  engine.ver = browser.ver = RegExp["$1"];

  engine.khtml = browser.kong = parseFloat(engine.ver);

 } else if (/rv:([^\)]+)\) Gecko\/\d{8}/.test(ua)){

  engine.ver = RegExp["$1"];

  engine.gecko = parseFloat(engine.ver);

 

  // 确定是不是firefox

  if (/Firefox\/(S+)/.test(ua)) {

   browser.ver = RegExp["$1"];

   browser.firefox = parseFloat(browser.ver);

  }

 } else if (/MSIE ([^;]+)/.test(ua)) {

  engine.ver = browser.ver = RegExp["$1"];

  engine.ie = browser.ie = parseFloat(engine.ver);

 

 }

 

 // 检测浏览器

 browser.ie = engine.ie;

 browser.opera = engine.opera;

 

 // 返回这些对象

 return {

  engine:engine,

  browser: browser

 }

}();

 

console.log(client.engine);

console.log(client.browser);

Salin selepas log masuk

Tangram 检测浏览器源码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

/**

 * 声明baidu包

 */

var baidu = baidu || {version: "1-3-2"}; // meizz 20100513 将 guid 升级成 \x06

baidu.guid = "$BAIDU$";//提出guid,防止修改window[undefined] 20100504 berg

 

/**

 * meizz 2010/02/04

 * 顶级域名 baidu 有可能被闭包劫持,而需要页面级唯一信息时需要用到下面这个对象

 */

 

window[baidu.guid] = window[baidu.guid] || {};

 

/**

 * 声明baidu.browser包

 */

baidu.browser = baidu.browser || {};

 

/**

 * 判断是否为isGecko

 */

baidu.browser.isGecko = /gecko/i.test(navigator.userAgent) && !/like gecko/i.test(navigator.userAgent);

 

/**

 * 判断是否为isWebkit

 */

baidu.browser.isWebkit = /webkit/i.test(navigator.userAgent);

 

/**

 * 判断是否为标准模式

 */

baidu.browser.isStrict = document.compatMode == "CSS1Compat";

 

/**

 * 判断是否为safari浏览器

 */

if ((/(\d+\.\d)(\.\d)&#63;\s+safari/i.test(navigator.userAgent) && !/chrome/i.test(navigator.userAgent))) {

 baidu.browser.safari = parseFloat(RegExp['\x241']);

}

 

/**

 * 判断是否为opera浏览器

 */

if (/opera\/(\d+\.\d)/i.test(navigator.userAgent)) {

 baidu.browser.opera = parseFloat(RegExp['\x241']);

}

 

/**

 * 判断是否为chrome浏览器

 */

if (/chrome\/(\d+\.\d)/i.test(navigator.userAgent)) {

 baidu.browser.chrome = parseFloat(RegExp['\x241']);

}

 

/**

 * 判断是否为ie浏览器

 */

if (/msie (\d+\.\d)/i.test(navigator.userAgent)) {

 baidu.ie = baidu.browser.ie = document.documentMode || parseFloat(RegExp['\x241']);

}

 

/**

 * 判断是否为firefox浏览器

 */

if (/firefox\/(\d+\.\d)/i.test(navigator.userAgent)) {

 baidu.browser.firefox = parseFloat(RegExp['\x241']);

 // '\x241' 是八进制表示法 '\x24' 对应字符 '$' ,所以 '\x241' 等同于 '$1'

}

Salin selepas log masuk

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah pelayan Apache? Apa itu pelayan Apache? Apakah pelayan Apache? Apa itu pelayan Apache? Apr 13, 2025 am 11:57 AM

Apache Server adalah perisian pelayan web yang kuat yang bertindak sebagai jambatan antara penyemak imbas dan pelayan laman web. 1. Ia mengendalikan permintaan HTTP dan mengembalikan kandungan laman web berdasarkan permintaan; 2. Reka bentuk modular membolehkan fungsi lanjutan, seperti sokongan untuk penyulitan SSL dan laman web dinamik; 3. Fail konfigurasi (seperti konfigurasi tuan rumah maya) perlu ditetapkan dengan teliti untuk mengelakkan kelemahan keselamatan, dan mengoptimumkan parameter prestasi, seperti kiraan thread dan masa tamat, untuk membina aplikasi web berprestasi tinggi dan selamat.

Selesaikan masalah caching dalam kraf CMS: Menggunakan plug-in wiejeben/craft-laravel-mix Selesaikan masalah caching dalam kraf CMS: Menggunakan plug-in wiejeben/craft-laravel-mix Apr 18, 2025 am 09:24 AM

Apabila membangunkan laman web yang menggunakan CraftCMS, anda sering menghadapi masalah caching fail sumber, terutamanya apabila anda sering mengemas kini fail CSS dan JavaScript, versi lama fail mungkin masih di -cache oleh penyemak imbas, menyebabkan pengguna tidak melihat perubahan terkini dalam masa. Masalah ini bukan sahaja memberi kesan kepada pengalaman pengguna, tetapi juga meningkatkan kesukaran pembangunan dan debugging. Baru-baru ini, saya menghadapi masalah yang sama dalam projek saya, dan selepas beberapa penjelajahan, saya dapati plugin Wiejeben/Craft-Laravel-Mix, yang sempurna menyelesaikan masalah caching saya.

Petua untuk menggunakan sistem fail HDFS di CentOS Petua untuk menggunakan sistem fail HDFS di CentOS Apr 14, 2025 pm 07:30 PM

Panduan pemasangan, konfigurasi dan pengoptimuman untuk sistem fail HDFS di bawah sistem CentOS Artikel ini akan membimbing anda cara memasang, mengkonfigurasi dan mengoptimumkan Sistem Fail Hadoop diedarkan (HDFS) pada sistem CentOS. Pemasangan Alam Sekitar Java dan Konfigurasi HDFS: Pertama, pastikan persekitaran Java yang sesuai dipasang. Fail edit/etc/profil, tambahkan yang berikut, dan ganti /usr/lib/java-1.8.0/jdk1.8.0_144 dengan laluan pemasangan Java sebenar anda: Exportjava_home =/usr/lib/java-1.8.0/

Pemantauan prestasi dan alat penyelesaian masalah nginx Pemantauan prestasi dan alat penyelesaian masalah nginx Apr 13, 2025 pm 10:00 PM

Pemantauan dan penyelesaian masalah prestasi Nginx terutamanya dilakukan melalui langkah-langkah berikut: 1. Gunakan Nginx-V untuk melihat maklumat versi, dan membolehkan modul Stub_status untuk memantau bilangan sambungan aktif, permintaan dan kadar hit cache; 2. Gunakan arahan atas untuk memantau pekerjaan sumber sistem, iostat dan vmstat monitor cakera I/O dan penggunaan memori masing -masing; 3. Gunakan TCPDUMP untuk menangkap paket untuk menganalisis trafik rangkaian dan menyelesaikan masalah sambungan rangkaian; 4. Konfigurasikan dengan betul bilangan proses pekerja untuk mengelakkan keupayaan pemprosesan serentak yang tidak mencukupi atau konteks proses yang berlebihan beralih ke atas; 5. Konfigurasikan cache Nginx dengan betul untuk mengelakkan tetapan saiz cache yang tidak betul; 6. Dengan menganalisis log nginx, seperti menggunakan arahan AWK dan GREP atau rusa

Cara mengkonfigurasi pelayan https di debian openssl Cara mengkonfigurasi pelayan https di debian openssl Apr 13, 2025 am 11:03 AM

Mengkonfigurasi pelayan HTTPS pada sistem Debian melibatkan beberapa langkah, termasuk memasang perisian yang diperlukan, menghasilkan sijil SSL, dan mengkonfigurasi pelayan web (seperti Apache atau Nginx) untuk menggunakan sijil SSL. Berikut adalah panduan asas, dengan mengandaikan anda menggunakan pelayan Apacheweb. 1. Pasang perisian yang diperlukan terlebih dahulu, pastikan sistem anda terkini dan pasang Apache dan OpenSSL: sudoaptDateSudoaptgradesudoaptinsta

Cara Memantau Status HDFS di CentOS Cara Memantau Status HDFS di CentOS Apr 14, 2025 pm 07:33 PM

Terdapat banyak cara untuk memantau status HDFS (sistem fail diedarkan Hadoop) pada sistem CentOS. Artikel ini akan memperkenalkan beberapa kaedah yang biasa digunakan untuk membantu anda memilih penyelesaian yang paling sesuai. 1. Gunakan WebUI Hadoop sendiri, antara muka web Hadoop sendiri untuk menyediakan fungsi pemantauan status kluster. Langkah -langkah: Pastikan kluster Hadoop berjalan dan berjalan. Akses WebUI: Masukkan http: //: 50070 (Hadoop2.x) atau http: //: 9870 (Hadoop3.x) dalam penyemak imbas anda. Nama pengguna dan kata laluan lalai biasanya HDFS/HDFS. 2. Pemantauan alat baris arahan Hadoop menyediakan satu siri alat baris arahan untuk memudahkan pemantauan

Cara melihat status thread dalam log tomcat Cara melihat status thread dalam log tomcat Apr 13, 2025 am 08:36 AM

Untuk melihat status thread dalam log tomcat, anda boleh menggunakan kaedah berikut: TomcatmanagerWeb antara muka: Masukkan alamat pengurusan TOMCAT (biasanya http: // localhost: 8080/pengurus) di pelayar, dan anda boleh melihat status thread selepas log. kolam benang Tomcat. Pilih dalam JConsole

Pemasangan Pelayan Nginx dan Panduan Konfigurasi Cepat Pemasangan Pelayan Nginx dan Panduan Konfigurasi Cepat Apr 13, 2025 pm 10:18 PM

Artikel ini memperkenalkan kaedah pembinaan dan konfigurasi nginx. 1. Pasang nginx: Gunakan sudoyumininstallnginx pada centOS, gunakan sudoapt-getinstallnginx pada ubuntu, dan mulakan dengan sudosystemctlstartnginx selepas pemasangan. 2. 3. Konfigurasi Hos Maya: di nginx.co

See all articles