这可能是一个愚蠢的问题,但我想使用Modernizr JS库来检测某些浏览器属性,以确定要显示或不显示的内容。
我有一个名为Pano2VR的应用程序输出HTML5和SWF。我需要iOS设备用户的HTML5。
但是,IE不渲染这个“HTML5”输出。看来他们的输出使用CSS3 3D变换和WebGL,一个或多个显然不支持IE9。
所以,对于那些用户我需要显示Flash版本。我计划使用IFRAME,并通过Modernizr脚本或document通过SRC。根据浏览器编写正确的IFRAME代码。
所有这些导致我如何使用Modernizr来检测简单的IE或不是IE?或检测CSS 3d变换?
还是有另一种方法来做到这一点?
解决方法
Modernizr不会检测到浏览器,它检测到哪些功能和功能存在,这是整个jist的想要做的。
你可以尝试钩在一个简单的检测脚本,像这样,然后使用它来做出选择。我还包括版本检测,以防万一需要。如果你只想检查任何版本的IE,你可以找到值为“MSIE”的navigator.userAgent。
var BrowserDetect = { init: function () { this.browser = this.searchString(this.dataBrowser) || "Other"; this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "Unknown"; },searchString: function (data) { for (var i = 0; i < data.length; i++) { var dataString = data[i].string; this.versionSearchString = data[i].subString; if (dataString.indexOf(data[i].subString) !== -1) { return data[i].identity; } } },searchVersion: function (dataString) { var index = dataString.indexOf(this.versionSearchString); if (index === -1) { return; } var rv = dataString.indexOf("rv:"); if (this.versionSearchString === "Trident" && rv !== -1) { return parseFloat(dataString.substring(rv + 3)); } else { return parseFloat(dataString.substring(index + this.versionSearchString.length + 1)); } },dataBrowser: [ {string: navigator.userAgent,subString: "Edge",identity: "MS Edge"},{string: navigator.userAgent,subString: "MSIE",identity: "Explorer"},subString: "Trident",subString: "Firefox",identity: "Firefox"},subString: "Opera",identity: "Opera"},subString: "OPR",subString: "Chrome",identity: "Chrome"},subString: "Safari",identity: "Safari"} ] }; BrowserDetect.init(); document.write("You are using <b>" + BrowserDetect.browser + "</b> with version <b>" + BrowserDetect.version + "</b>");
然后,您可以简单地检查:
BrowserDetect.browser == 'Explorer'; BrowserDetect.version <= 9;