diff --git a/README.md b/README.md index 06af211..000b90f 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,7 @@ feature.contextMenu feature.css3Dtransform feature.cssTransform feature.cssTransition +feature.cssFilter feature.defer feature.deviceMotion feature.deviceOrientation @@ -87,6 +88,7 @@ feature.geolocation feature.historyAPI feature.placeholder feature.localStorage +feature.RTCPeerConnection feature.matchMedia feature.pictureElement feature.querySelectorAll diff --git a/feature.js b/feature.js index 52dbbf9..01add34 100644 --- a/feature.js +++ b/feature.js @@ -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. * @@ -17,7 +17,7 @@ * console.log("webGL supported!"); * } * - * Author: @viljamis, https://viljamis.com + * Author: @viljamis, https://viljamis.com | @raulsi, http://raulsi.in */ /* globals DocumentTouch */ @@ -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, @@ -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), diff --git a/feature.min.js b/feature.min.js index 6282151..adcbc6c 100644 --- a/feature.min.js +++ b/feature.min.js @@ -1,6 +1 @@ -/*! FEATURE.JS 1.0.0, http://featurejs.com */ -;(function(b,c,k){function g(){}var d=c.documentElement,a={create:function(e){return c.createElement(e)},old:!!/(Android\s(1.|2.))|(Silk\/1.)/i.test(navigator.userAgent),pfx:function(){var e=c.createElement("dummy").style,b=["Webkit","Moz","O","ms"],a={};return function(c){if("undefined"===typeof a[c]){var f=c.charAt(0).toUpperCase()+c.substr(1),f=(c+" "+b.join(f+" ")+f).split(" ");a[c]=null;for(var d in f)if(e[f[d]]!==k){a[c]=f[d];break}}return a[c]}}()},l=!(a.old||null===a.pfx("perspective")),m= -!(a.old||null===a.pfx("transformOrigin")),n=null!==a.pfx("transition"),p=!!b.addEventListener,q=!!c.querySelectorAll,r=!!b.matchMedia,t="placeholder"in a.create("input"),h;try{localStorage.setItem("x","x"),localStorage.removeItem("x"),h=!0}catch(e){h=!1}g.prototype={constructor:g,css3Dtransform:l,cssTransform:m,cssTransition:n,addEventListener:p,querySelectorAll:q,matchMedia:r,deviceMotion:"DeviceMotionEvent"in b,deviceOrientation:"DeviceOrientationEvent"in b,contextMenu:"contextMenu"in d&&"HTMLMenuItemElement"in -b,classList:"classList"in d,placeholder:t,localStorage:h,historyAPI:b.history&&"pushState"in b.history,serviceWorker:"serviceWorker"in navigator,viewportUnit:function(e){try{return e.style.width="1vw",""!==e.style.width}catch(a){return!1}}(a.create("dummy")),remUnit:function(a){try{return a.style.width="1rem",""!==a.style.width}catch(b){return!1}}(a.create("dummy")),canvas:function(a){return!(!a.getContext||!a.getContext("2d"))}(a.create("canvas")),svg:!!c.createElementNS&&!!c.createElementNS("http://www.w3.org/2000/svg", -"svg").createSVGRect,webGL:function(a){try{return!(!b.WebGLRenderingContext||!a.getContext("webgl")&&!a.getContext("experimental-webgl"))}catch(c){return!1}}(a.create("canvas")),cors:"XMLHttpRequest"in b&&"withCredentials"in new XMLHttpRequest,touch:!!("ontouchstart"in b||b.navigator&&b.navigator.msPointerEnabled&&b.MSGesture||b.DocumentTouch&&c instanceof DocumentTouch),async:"async"in a.create("script"),defer:"defer"in a.create("script"),geolocation:"geolocation"in navigator,srcset:"srcset"in a.create("img"), -sizes:"sizes"in a.create("img"),pictureElement:"HTMLPictureElement"in b,testAll:function(){var a=" js",b;for(b in this)"testAll"!==b&&"constructor"!==b&&this[b]&&(a+=" "+b);d.className+=a.toLowerCase()}};b.feature=new g})(window,document); +!function(e,t,n){"use strict";function r(){}function i(){var e=new r;return e}var o=t.documentElement,c={create:function(e){return t.createElement(e)},old:!!/(Android\s(1.|2.))|(Silk\/1.)/i.test(navigator.userAgent),pfx:function(){var e=t.createElement("dummy").style,r=["Webkit","Moz","O","ms"],i={};return function(t){if("undefined"==typeof i[t]){var o=t.charAt(0).toUpperCase()+t.substr(1),c=(t+" "+r.join(o+" ")+o).split(" ");i[t]=null;for(var a in c)if(e[c[a]]!==n){i[t]=c[a];break}}return i[t]}}()};r.prototype={constructor:r,css3Dtransform:function(){var e=!c.old&&null!==c.pfx("perspective");return!!e}(),cssTransform:function(){var e=!c.old&&null!==c.pfx("transformOrigin");return!!e}(),cssTransition:function(){var e=null!==c.pfx("transition");return!!e}(),cssFilter:function(){var e=null!==c.pfx("filter");return!!e}(),addEventListener:!!e.addEventListener,querySelectorAll:!!t.querySelectorAll,matchMedia:!!e.matchMedia,RTCPeerConnection:function(){var t=null;try{var n=e.RTCPeerConnection||e.mozRTCPeerConnection||e.webkitRTCPeerConnection,r=new n(t);return r.close(),!0}catch(i){return!1}}(),deviceMotion:"DeviceMotionEvent"in e,deviceOrientation:"DeviceOrientationEvent"in e,contextMenu:"contextMenu"in o&&"HTMLMenuItemElement"in e,classList:"classList"in o,placeholder:"placeholder"in c.create("input"),localStorage:function(){var e="x";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(t){return!1}}(),historyAPI:e.history&&"pushState"in e.history,serviceWorker:"serviceWorker"in navigator,viewportUnit:function(e){try{e.style.width="1vw";var t=""!==e.style.width;return!!t}catch(n){return!1}}(c.create("dummy")),remUnit:function(e){try{e.style.width="1rem";var t=""!==e.style.width;return!!t}catch(n){return!1}}(c.create("dummy")),canvas:function(e){return!(!e.getContext||!e.getContext("2d"))}(c.create("canvas")),svg:!!t.createElementNS&&!!t.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect,webGL:function(t){try{return!(!e.WebGLRenderingContext||!t.getContext("webgl")&&!t.getContext("experimental-webgl"))}catch(n){return!1}}(c.create("canvas")),cors:"XMLHttpRequest"in e&&"withCredentials"in new XMLHttpRequest,touch:!!("ontouchstart"in e||e.navigator&&e.navigator.msPointerEnabled&&e.MSGesture||e.DocumentTouch&&t instanceof DocumentTouch),async:"async"in c.create("script"),defer:"defer"in c.create("script"),geolocation:"geolocation"in navigator,srcset:"srcset"in c.create("img"),sizes:"sizes"in c.create("img"),pictureElement:"HTMLPictureElement"in e,testAll:function(){var e=" js";for(var t in this)"testAll"!==t&&"constructor"!==t&&this[t]&&(e+=" "+t);o.className+=e.toLowerCase()}},e.feature=i()}(window,document); \ No newline at end of file diff --git a/tests/index.html b/tests/index.html index e5dd62c..6627244 100644 --- a/tests/index.html +++ b/tests/index.html @@ -34,6 +34,9 @@
Requires click event:
+