首頁 web前端 H5教程 偵測瀏覽器對HTML5和CSS3支持度的方法_html5教學技巧

偵測瀏覽器對HTML5和CSS3支持度的方法_html5教學技巧

May 16, 2016 pm 03:46 PM
css3 html5 相容

 HTML5, CSS3 以及其他相關技術例如 Canvas、WebSocket 等等將 Web 應用開發帶到了一個新的高度。該技術透過組合 HTML、CSS 和 JavaScript 可以開發出桌面應用程式具有的效果。儘管 HTML5 承諾很多,但現實中對 HTML5 支援的瀏覽器以及 HTML5 標準本身的完善程度都還沒有到一個很成熟的程度。現在完全不擔心瀏覽器支援是不切實際的,還需要時間,因此當我們決定要採用 HTML5 技術開發 Web 應用的時候,我們需要對瀏覽器所支援的特性進行檢測。

而 Modernizr 就可以幫助你完成對瀏覽器所支援 HTML5 特性的檢查。

下面程式碼偵測瀏覽器是否支援Canvas:
 

複製程式碼
複製程式碼


程式碼
<script><br /> window.onload = function () {<br /> if (canvasSupported()) {<br /> alert('canvas supported');<br /> }<br /> }<br /> }<br /> }<br /> }</script>
} }

}
}
}

}
} } function canvasSupported() { var canvas = document.createElement('canvas');
return (canvas.getContext && canvas.getContext('2d'));
}
}



下面程式碼偵測瀏覽器是否支援本機儲存:
 




複製程式碼


程式碼如下:
<script><br /> window.onload = function () {</script>
if (localStorageSupported()) { alert('local storage supported');

}

}

}
}

}

}

}

}
}2015625153003697.png (690×533) }

}

}
}
}
}

}
} } } } }
}
}
}
} }

} } }

}

function localStorageSupported() {

try {
return ('localStorage' in window && window['localStorage'] != null);

} return false; }
上面的兩個例子中我們可以很直觀的對瀏覽器的特性進行檢查以確保我們在對應的瀏覽器上應用的功能能否正常運作。

而使用 Modernizr 的好處還在於你不需要這樣一項項去檢查,還有更簡單的方法,下面我們開始:

當我第一次聽到 Moderizr 這個專案時,我以為這是一個讓一些舊的瀏覽器能支援 HTML5 的 JS 函式庫,事實上不是,它主要是偵測的功能。

Modernizr 可以透過網址http://modernizr.com 來訪問,該網站同時還提供一個定制腳本的功能,你可以確定你需要檢測什麼特性,並依此來生成相應的JS 文件,這樣可以減少不必要的JS 代碼。 

 一旦下載了 Modernizr 的 JS 檔案後,就可以透過 <script> 標籤引入網頁中。 <br /> <br /><br><div class="msgheader"><div class="right"><span style="CURSOR: pointer" onclick="copycode(getid('phpcode13'));"><u>複製程式碼程式碼如下:<div class="msgborder" id="phpcode13"><script src="Scripts/Modesrcizr. js" type="text/javascript"></script> 偵測 HTML 元素 一旦我們在頁面上引入了Modernizr 後就可以立即使用,我們可以在 元素中聲明不同的CSS 類,這些類定義了所需要支援或不支援的特性,不支援的特性其類名一般是no-FeatureName,例如no-flexbox。以下是 chrome 上可運作的範例:  複製程式碼程式碼如下:程式碼如下: 也可以這樣來判斷瀏覽器是否啟用了JavaScript 支援: 複製程式碼複製程式碼

你可以在HTML5 Boilerplate (http://html5boilerplate.com) 或是Initializr (http://initializr.com) 看到一些入門的例子,根據上面的步驟,增加no-js 類別可以判斷瀏覽器是否啟用了JavaScript 支援。
 
使用 HTML5 和 CSS3 特性

你為 標籤增加的CSS 屬性,可以直接在CSS 中定義所需要的樣式,例如:
 

複製代碼
程式碼如下:

.boxshadow #MyContainer {
border: none;
-webkit-box-shadow: #666 1px 1px 1px;
moz-box-shadow: #666 1px 1px 1px;
}

.no-boxshadow #MyContainer {
border: 2px solid black;
}
border: 2px solid black;}

如果瀏覽器支援 box-shadows 的話,將會為 元素增加 boxshadow 這個 CSS 類,否則的話就使用 no-boxshadow 這個類。這樣假設瀏覽器不支援 box-shadow 的話,我們可以使用其他的樣式來定義。


另外我們也可以使用 Modernizr 的物件來操作這個行為,例如下面的程式碼用來偵測瀏覽器是否支援 Canvas 和 本機儲存:


 

複製程式碼
程式碼如下:


$(document). ) {

if (Modernizr.canvas) {
//Add canvas code
}

if (Modernizr.localstorage) {
//Add local storage code
}
});


全局的Modernizr 對象同樣可用於測試CSS3 特性是否支持:
 

複製代碼
代碼如下:


$(document).ready(function () {

if (Modernizr.borderradius) {
$('#MyDiv').addClass('borderRadiusStyle');
}

if (Modernizr.csstransforms) {
$('#MyDiv').addClass('transformsStyle');
}
});


使用Modernizr載入腳本

在出現了瀏覽器不支援某些功能的情況下,你不僅可以提供一個不錯的備用方案,還可以加載shim/polyfill腳本在適當情況下填補缺失的功能(想了解更多關於shims /polyfills的資訊,請查看https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills). Modernizr擁有一個內建的腳本載入器,可以用來測試一個功能,並在功能無效的時候載入另一個腳本.腳本載入器是內建在Modernizr中的,並且是有效的獨立yepnope(http://yepnopejs.com)腳本. 腳本載入器非常容易上手,它根據特定瀏覽器功能的可用性,真的會簡化載入腳本的過程.

你可以使用Modernizr的load()方法來動態載入腳本,該方法接受定義被測功能的屬性(test屬性), 如測試成功後要載入的腳本(yep屬性), 如測試失敗後要載入的腳本(nope屬性), 和無論測試成功或失敗都要載入的腳本(both屬性). 使用load()及其屬性的範例如下:
 

複製程式碼
程式碼如下:

Modernizr.load({
test: Modernizr.canvas, yep: '35Canvas: '
nope: 'excanvas.js',
both: 'myCustomScript.js'
});


這個例子中Modernizr在載入腳本時還會測試是否支援canvas功能. 如果目標瀏覽器支援HTML5 canvas就會載入html5CanvasAvailable.js腳本及myCustomScript.js腳本(在這個例子中使用yep屬性有點牽強  – 這只是為了演示load()方法中的屬性如何使用). 否則的話, 就會加載excanvas.js這個polyfill腳本來為IE9之前版本的瀏覽器添加功能支持. 一旦excanvas.js被加載,myCustomScript .js也會接著被載入.

由於Modernizr會處理載入腳本, 所以你可以用它來做別的事情. 例如, 在Google或微軟提供的第三方CDN不管用的時候,你可以用Modernizr來載入本地的腳本. Modernizr文檔中提供了在CDN掛掉後提供本地jQuery後備過程的範例:
程式碼會先嘗試從Google CND載入jQuery. 一旦腳本下載完成(或下載失敗)就會呼叫某個方法. 這個方法會檢查jQuery物件是否有效,如果無效就載入本地的jQuery腳本. 並在其後載入一個名為needs-jQuery.js的腳本.

最後想說的是,如果你打算開發基於HTML5 和CSS3 的Web 應用的話,那Modernizr 就是你必不可少的工具,除非,除非你確認你所有客戶所使用的瀏覽器支援你所寫的代碼。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

HTML 中的表格邊框 HTML 中的表格邊框 Sep 04, 2024 pm 04:49 PM

HTML 表格邊框指南。在這裡,我們以 HTML 中的表格邊框為例,討論定義表格邊框的多種方法。

HTML 中的巢狀表 HTML 中的巢狀表 Sep 04, 2024 pm 04:49 PM

這是 HTML 中巢狀表的指南。這裡我們討論如何在表中建立表格以及對應的範例。

HTML 左邊距 HTML 左邊距 Sep 04, 2024 pm 04:48 PM

HTML 左邊距指南。在這裡,我們討論 HTML margin-left 的簡要概述及其範例及其程式碼實作。

HTML 表格佈局 HTML 表格佈局 Sep 04, 2024 pm 04:54 PM

HTML 表格佈局指南。在這裡,我們詳細討論 HTML 表格佈局的值以及範例和輸出。

HTML 有序列表 HTML 有序列表 Sep 04, 2024 pm 04:43 PM

HTML 有序列表指南。在這裡我們也分別討論了 HTML 有序列表和類型的介紹以及它們的範例

HTML 輸入佔位符 HTML 輸入佔位符 Sep 04, 2024 pm 04:54 PM

HTML 輸入佔位符指南。在這裡,我們討論 HTML 輸入佔位符的範例以及程式碼和輸出。

在 HTML 中移動文字 在 HTML 中移動文字 Sep 04, 2024 pm 04:45 PM

HTML 中的文字移動指南。在這裡我們討論一下marquee標籤如何使用語法和實作範例。

HTML onclick 按鈕 HTML onclick 按鈕 Sep 04, 2024 pm 04:49 PM

HTML onclick 按鈕指南。這裡我們分別討論它們的介紹、工作原理、範例以及各個事件中的onclick事件。

See all articles