Javascript高階程式設計學習筆記(33)—— 客戶端檢測(2)怪癖檢測
怪癖檢測
和能力檢測類似,但其目標不同
能力檢測的目的是判斷瀏覽器支不支援某種能力
而怪癖檢測的目的是判斷瀏覽器是否存在某些缺陷
這種時候需要我們執行一段程式碼來判斷瀏覽器是否有這樣的缺陷
或者說是怪癖(bug)
一般出現這種情況的瀏覽器當然是IE了
就以IE的某個怪癖舉例
在IE8以下有一個bug
如果某個例項的屬性和其原型的不可列舉屬性同名,那麼這個屬性將不會出現在 for-in 迴圈中
也就是說例項上的屬性被原型上的屬性遮蔽了
其怪癖檢測的程式碼如下:
var hasDontEnumQuirk = function(){var o = {toString:function(){}}; for(var prop in o){ if(prop ==="toString"){ return false;// 如果能遍歷出toString則說明瀏覽器不存在該怪癖 } } return true; }
一般來說怪癖是某個瀏覽器獨有的,當這些怪癖會影響我們的程式碼時,我們就需要做怪癖檢測,以做出對應的處理
相關推薦
Javascript高階程式設計學習筆記(33)—— 客戶端檢測(2)怪癖檢測
怪癖檢測 和能力檢測類似,但其目標不同 能力檢測的目的是判斷瀏覽器支不支援某種能力 而怪癖檢測的目的是判斷瀏覽器是否存在某些缺陷 這種時候需要我們執行一段程式碼來判斷瀏覽器是否有這樣的缺陷 或者說是怪癖(bug) 一般出現這種情況的瀏覽器當然是IE了 就以IE的某
Javascript高階程式設計學習筆記(三)—— JS中的資料型別(1)
前一段時間由於事情比較多,所以筆記耽擱了一段時間,從這一篇開始我會盡快寫完這個系列。 文章中有什麼不足之處,還望各位大佬指出。 JS中的資料型別 上一篇中我寫了有關JS引入的Script標籤相關的東西。 那麼這一篇,我們可以正式進入JS的世界了,emmm 前面的東西應該比較基礎,大佬們不
Javascript高階程式設計學習筆記(6)—— 流程控制語句
話不多說,我們直接開始進入今天的主題 流程控制語句 首先什麼是流程控制語句呢? 顧名思義,就是控制流程的語句。 在JS中語句定義了ECMAScript中的主要語法,讓我們可以使用一系列的關鍵字來完成指定任務。 語句也是構成一門程式語言旳基礎,所以還是有必要記錄一下的。 雖然有些語句不常用,但存在即
javascript高階程式設計學習筆記(第四章)
-基本型別和引用型別的值 ECMAScript變數可能包含兩種資料型別的值:基本型別值指簡單的資料段,引用型別值指可能由多個值構成的物件。對於5種基本型別值,可以直接操作儲存在變數中的值;而javascript不允許直接訪問物件的記憶體空間,只能通過操作物件的
Javascript高階程式設計學習筆記(7)—— 函式
前幾天有事耽擱了,今天繼續更新 今天的主要內容是JS中的函式 這一篇主要講函式的定義等內容,至於變數提升、執行環境、閉包、記憶體回收等內容在後面講,高玩們可以不用看下面的正文了。 函式 首先來講,函式對於任何程式語言都是一個十分核心的概念。 Js中的函式通過function關鍵字來宣
Javascript高階程式設計學習筆記(2)
script標籤 js在瀏覽器中的使用,肯定會涉及到script標籤。 那麼script標籤有哪些屬性呢? 1.async:非同步載入(不讓頁面等待該指令碼的載入執行,非同步載入頁面的其他部分) 2.charset:設定js的字符集編碼 3.defer:延遲指令碼(當瀏覽器解析到/html 結束標籤時才執行
Javascript高階程式設計學習筆記(10)—— 作用域、作用域鏈
昨天介紹了,JS中函式的作用域 什麼詞法環境之類的,可能很多小夥伴不太明白。 在今天的內容開始之前,先做個簡短的宣告: 詞法環境這一概念是在ES5中提出的,因為詞法環境主要用於儲存let、const宣告的變數、函式 而在ES3中對變數相關的資訊都儲存在變數物件上; 從功能上來說變數物
Javascript高階程式設計學習筆記(12)—— 引用型別(1)Object型別
前面的文章中我們知道JS中的值分為兩種型別 基礎型別的值和引用型別的值 基礎型別的值我已經大概介紹了一下,今天開始後面幾天我會為大家介紹一下引用型別的值 Object型別 物件是引用型別的值的例項,在ECMA中引用型別是一種資料結構 用於將資料和功能組織到一起,在其它程式語言中通常也
Javascript高階程式設計學習筆記(15)—— 引用型別(4)RegExp型別
JS中處理字串最常用的應該就是正則了 同樣正則(RegExp)型別也是JS中引用型別的一種 ECMAScript通過 RegExp型別 來支援正則表示式 建立正則 var expression = / pattern / flags; 在上面建立正則例項中 pattern
Javascript高階程式設計學習筆記(16)—— 引用型別(5) Function型別
JS中許多有趣的地方都和函式脫不了聯絡 那麼是什麼讓JS中的函式這麼有趣呢? 我們一起來看看吧 Function型別 在JS中函式實際上就是物件,每個函式都是Function型別的例項,和JS的其他引用型別都擁有屬性和方法 正是由於這個原因,函式名實際上就是一個指標,指向
Javascript高階程式設計學習筆記(17)—— 引用型別(6)基本包裝類
基本包裝類 基本包裝類這個概念或許有的小夥伴沒有聽說過 但是小夥伴們有沒有想過,為什麼基本資料型別的例項也有方法呢? 其實這些方法都來自基本包裝型別 這是JS為了方便操作基礎資料型別而建立的特殊引用型別 基本包裝類有三種 1. Boolean型別 2. Number型別 3.
Javascript高階程式設計學習筆記(19)—— 物件屬性
面向物件的語言有一個標誌,那就是語言中都有類的概念 前面的文章中我提到過ECMAScript中沒有類的概念(ES6之前) 所以JS中的物件和其他語言中的物件存在著一些區別 ECMA中對物件的定義如下: 無序屬性的集合,其屬性可以包含基本值、物件、或者函式 說白了JS中的物件可以看作散
Javascript高階程式設計學習筆記(20)—— 建立物件
由於今天有點事,加上物件原型鏈的東西有點多,所以今天這篇就講一個小的知識點吧 也算為明天的物件繼承做鋪墊 工廠模式 雖然使用物件字面量來建立一個物件十分地便捷,但是這個方法有一個顯著的缺點 那就是如果我們需要為一個介面建立多個物件,那麼將會產生大量的重複程式碼 所以工廠模式氤氳而生
Javascript高階程式設計學習筆記(27)—— BOM(1)window物件1
ECMAScript是JS的核心 但是對於在瀏覽器中執行的JS,BOM顯然才是真正的核心 我們知道JS是由三個部分組成的 BOM、DOM、ECMAScript 之前的文章我們主要介紹的是ECMAScript 也就是JS的核心語法 但是JS作為一種指令碼語言,其建立的初衷不就是為了控制
Javascript高階程式設計學習筆記(28)—— BOM(2)window物件2
今天講一下window物件和瀏覽器導航,彈窗等有關的內容 導航和開啟視窗 window.open() 用於導航到某個特定 url 該方法接收四個引數 1、url 2、視窗目標(當頁面中有多個框架frame,用於指定哪個視窗開啟第一個引數的url) 3、特性字串(用於
Javascript高階程式設計學習筆記(29)—— BOM(3)location物件
在JS中location是一個神奇的物件 它既是window物件的屬性,也是document物件的屬性 它的作用主要在於儲存當前文件頁面的資訊,以及將 url 解析為獨立的片段 location物件屬性 1、hash 返回url中的 #後面的0個或多個字元,若 url 不包含#則返回
Javascript高階程式設計學習筆記(30)—— BOM(4)navigator物件
window物件作為瀏覽器的全域性物件、location物件儲存了頁面的url資訊 那麼navigator物件又有什麼作用呢? navigator物件 該物件最早由 Netspace Navigator 2.0 引入,用於識別瀏覽器客戶端的事實標準 在IE中以window.client
Javascript高階程式設計學習筆記(31)—— BOM(5)screen、history物件
screen物件 screen物件應該是BOM物件中最不常用的物件了 其主要用於提供客戶端的顯示能力資訊 包括瀏覽器外部顯示的資訊,和畫素的寬高等 這個物件的主要用於檢測客戶端能力,一般不會影響功能 而且由於,該物件的許多屬性基本上都是隻讀的,所以也沒有太多可以操作的空間,畢竟這是由客戶端硬體所決定
Javascript高階程式設計學習筆記(34)—— 客戶端檢測(3)使用者代理檢測
使用者代理檢測 前面的文章介紹的是如何檢測瀏覽器對某一功能的支援情況 但是在實踐中我們有些時候免不了需要知道使用者到底是用的什麼瀏覽器對我們的站點進行訪問 這也是統計使用者行為的一部分 使用者代理檢測這種方式就是用於檢測使用者訪問所使用的瀏覽器的 那麼如何進行檢測呢? 我之前的文章
Javascript高階程式設計學習筆記(35)—— DOM(1)節點
DOM JS由三部分組成 1、BOM 2、DOM 3、ECMAScript ES和BOM在前面的文章已經介紹過了 今天開始JS組成的最後一部分DOM(文件物件模型) 我們知道,JS中的這三個部分實際上就是三種規範,只要是實現了這三種規範,那麼這個語言就可以說是JS DOM(文件物件模型)也是一