Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,13 +80,15 @@ feature.contextMenu
feature.css3Dtransform
feature.cssTransform
feature.cssTransition
feature.cssFilter
feature.defer
feature.deviceMotion
feature.deviceOrientation
feature.geolocation
feature.historyAPI
feature.placeholder
feature.localStorage
feature.RTCPeerConnection
feature.matchMedia
feature.pictureElement
feature.querySelectorAll
Expand Down
27 changes: 23 additions & 4 deletions feature.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
* http://featurejs.com
*
* CSS 3D Transform, CSS Transform, CSS Transition, Canvas, SVG,
* addEventListener, querySelectorAll, matchMedia, classList API,
* placeholder, localStorage, History API, Viewport Units, REM Units,
* CORS, WebGL, Service Worker, Context Menu, Geolocation,
* addEventListener, querySelectorAll, matchMedia, RTCPeerConnection,
* classList API, placeholder, localStorage, History API, Viewport Units,
* REM Units, CORS, WebGL, Service Worker, Context Menu, Geolocation,
* Device Motion, Device Orientation, Touch, Async, Defer,
* Srcset, Sizes & Picture Element.
*
Expand All @@ -17,7 +17,7 @@
* console.log("webGL supported!");
* }
*
* Author: @viljamis, https://viljamis.com
* Author: @viljamis, https://viljamis.com | @raulsi, http://raulsi.in
*/

/* globals DocumentTouch */
Expand Down Expand Up @@ -100,6 +100,12 @@
return !!test;
})(),

// Test if CSS filter are supported
cssFilter : (function() {
var test = util.pfx("filter") !== null;
return !!test;
})(),

// Test if addEventListener is supported
addEventListener : !!window.addEventListener,

Expand All @@ -109,6 +115,19 @@
// Test if matchMedia is supported
matchMedia : !!window.matchMedia,

// Test if RTCPeerConnection is supported
RTCPeerConnection : (function(){
var servers = null;
try {
var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
var rtcpconn = new RTCPeerConnection(servers);
rtcpconn.close();
return true;
} catch (err) {
return false;
}
})(),

// Test if Device Motion is supported
deviceMotion : ("DeviceMotionEvent" in window),

Expand Down
7 changes: 1 addition & 6 deletions feature.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 22 additions & 0 deletions tests/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ <h4>CSS transitions</h4>
<p>Requires click event:</p>
<div class="test transition" style="-webkit-transition: all 1.5s ease; -moz-transition: all 1.5s ease; -ms-transition: all 1.5s ease; -o-transition: all 1.5s ease; transition: all 1.5s ease;"></div>

<h4>CSS filter</h4>
<img id="cssfilter" src="http://featurejs.com/img/appicon.png" class="test" style="-webkit-filter: invert(100%); -moz-filter: invert(100%); -o-filter: invert(100%); -ms-filter: invert(100%); filter: invert(100%);"></div>

<h4>AddEventListener</h4>
<div class="test" id="addeventlistener"></div>

Expand All @@ -45,6 +48,9 @@ <h4>QuerySelectorAll</h4>
<h4>MatchMedia</h4>
<div class="test" id="matchmedia"></div>

<h4>RTCPeerConnection</h4>
<div class="test" id="rtcpeerconnection"></div>

<h4>ClassList API</h4>
<div class="test" id="classlist"></div>

Expand Down Expand Up @@ -142,10 +148,12 @@ <h4>Context Menu</h4>
log(feature.css3Dtransform, "CSS 3D transforms");
log(feature.cssTransform, "CSS transforms");
log(feature.cssTransition, "CSS transitions");
log(feature.cssFilter, "CSS filter");
log(feature.contextMenu, "Context Menu");
log(feature.addEventListener, "AddEventListener");
log(feature.querySelectorAll, "QuerySelectorAll");
log(feature.matchMedia, "MatchMedia");
log(feature.RTCPeerConnection, "RTCPeerConnection");
log(feature.async, "Async attribute");
log(feature.defer, "Defer attribute");
log(feature.deviceMotion, "DeviceMotion");
Expand Down Expand Up @@ -190,6 +198,12 @@ <h4>Context Menu</h4>
});
} catch(err) {}

// Image Filer
if (feature.cssFilter) {
var needsTransform = document.getElementById("cssfilter");
needsTransform.className += " active";
}

// AddEventListener
try {
var needsListener = document.getElementById("addeventlistener");
Expand All @@ -215,6 +229,14 @@ <h4>Context Menu</h4>
}
} catch(err) {}

// RTCPeerConnection
try {
var needsRTCPeerConnection = document.getElementById("rtcpeerconnection");
if(feature.RTCPeerConnection){
needsRTCPeerConnection.className += " active";
}
} catch(err) {}

// ClassList API
try {
var needsClassList = document.getElementById("classlist");
Expand Down