标签: modernizr

凉亭和Modernizr

我知道我可以创建一个Modernizr的自定义构建版本来检测我关心的功能.但有没有办法使用与Bower一起安装的Modernizr来检测特定功能或一组功能(例如SVG支持)而不包括整个库?

基本上当我这样做

bower install modernizr
Run Code Online (Sandbox Code Playgroud)

我将获得超出我需要的整个库.

modernizr bower

16
推荐指数
1
解决办法
2万
查看次数

现代浏览器是并行还是按顺序加载脚本?

我评价一个脚本加载优化现有资源,但我readed像一些文章这个,是指直到这个顺序脚本加载阶段完成旧的浏览器阻止其他下载.我检查Modernizr(yepnope.js),headjs和ControlJs作为候选人.但是,它是否需要在现代浏览器中使用此工具进行并行脚本加载?

javascript loading modernizr

15
推荐指数
1
解决办法
8017
查看次数

CSS3动画填充模式polyfill

前言

让我们假设一个div从动画opacity:0;opacity:1;,我想保留opacity:1;动画结束之后.

这是什么animation-fill-mode:forwards;.

@keyframes myAnimation {
    from { opacity:0; }
    to { opacity:1; }
}
div {
    opacity:0;
    animation-name:myAnimation;
    animation-delay:1s;
    animation-duration:2s;
    animation-fill-mode:forwards;
}?
<div>just a test</div>?
Run Code Online (Sandbox Code Playgroud)

在jsFiddle上运行它

  • 注1:我在这里没有包含供应商前缀以简化
  • 注2:这只是一个例子,请不要回复"只使用jQuery fadeIn函数"等.

有些事要知道

这个答案中,我读到animation-fill-modeChrome 16+,Safari 4 +,Firefox 5+支持.

但Chrome 1+和Opera也支持animation单独使用.因此,即使不支持,使用Modernizr进行的一般测试也可能会返回正值.fill-mode

目标animation-fill-mode我在Modernizr上添加了一个新的测试:

Modernizr.addTest('animation-fill-mode',function(){
    return Modernizr.testAllProps('animationFillMode');
});
Run Code Online (Sandbox Code Playgroud)

现在我有一个.no-animation-fill-modeCSS和Modernizr.animationFillModeJavaScript 的课程.

我还从CSS3动画规格中读到:

文档样式表中指定的动画将从文档加载开始


最后,问题

是否可以在动画结束的确切秒数内运行简单的jQuery函数

$(document).ready(function(){ …
Run Code Online (Sandbox Code Playgroud)

jquery animation css3 modernizr polyfills

14
推荐指数
1
解决办法
4729
查看次数

Modernizr与cssSandpaper?

我一直在努力尝试在IE 8,7和6上使用旋转(xdeg)功能,为此我谷歌一段时间找到了cssSandpaper但是因为我必须加载4个不同的脚本我想只做它如果它是必要的im使用modernizr我尝试这样的事情:

<head>

        <link rel="stylesheet" href="stilos/estilo.css" />
        <script src="scripts/modernizr.custom.19387.js"></script>
        <script src="scripts/jquery-1.8.1.js"></script>
        <script src="scripts/misfallbacks.js"></script>
</head>

<body>
    <div id="acerca"><a href="#">Acerca de mi</a></div>
</body>
Run Code Online (Sandbox Code Playgroud)

我的css文件(estilo.css):

#acerca{
    -webkit-transform: rotate(90deg);
    -moz-transform: rotate(90deg);
    -o-transform: rotate(90deg);
    -ms-transform:rotate(90deg);
    -sand-transform:rotate(90deg);
    position: relative;
    top: -233px;
    left: 462px;
    width: 123px;
    height: 23px;
    z-index:100;
}
Run Code Online (Sandbox Code Playgroud)

我的js文件(misfallbacks.js)

Modernizr.load({
        test:Modernizr.csstransforms,
        nope:['transformie/EventHelpers.js/','transformie/cssQuery-p.js','transformie/sylvester.js','transformie/cssSandpaper.js']

    );//Fin de monernizr on load 
Run Code Online (Sandbox Code Playgroud)

它在safari,chrome,opera,Firefox和IE9上运行得很好但是当我尝试IE8或IE7时,我在控制台上收到以下错误
SCRIPT5007: Unable to get value of the property 'addEventListener': object is null or undefined EventHelpers.js, line 49 character 9
我添加了一个console.log来试图找出发生了什么并在这里去了那一行它是(EvenHelpers.js):

me.addEvent = function(obj, …
Run Code Online (Sandbox Code Playgroud)

javascript modernizr polyfills css-transforms

13
推荐指数
1
解决办法
1670
查看次数

getUserMedia - 如何检测设备是否确实有摄像头

我正在使用html5/javascript getUserMedia api编写一个js应用程序,如果可用的话,它将使用设备的相机.我正在使用Modernizr来检测(浏览器的)功能,如下所示:

if (Modernizr.getusermedia) {
Run Code Online (Sandbox Code Playgroud)

并在真正的块内:

navigator.getUserMedia(
    {   // we would like to use video but not audio
        // This object is browser API specific! - some implementations require boolean properties, others require strings!
        video: true, 
        audio: false
    },
    function(videoStream) {
        // 'success' callback - user has given permission to use the camera
        // my code to use the camera here ... 
    },
    function() {
        // 'no permission' call back
        console.log("user did not give access to the camera");
    } …
Run Code Online (Sandbox Code Playgroud)

javascript camera modernizr

13
推荐指数
2
解决办法
1万
查看次数

在RequireJS中包含Modernizr并在head标签中包含Modernizr

我有RequireJS和Modernizr的问题.

我想要Modernizr资源.以及身体的其他一切.原因是Modernizr需要在DOMContentLoad之前做一些事情.我希望能够使用RequireJS将Modernizr模块加载到其他模块中.如何在开发和生产环境中实现这一目标?我使用requirejs来拉取所有依赖项并缩小所有资源.并且yeoman构建取代<script data-main="scripts/main" src="scripts/vendor/require.js"></script>了缩小版本.

在身体标签下:

<!-- build:js ikl.app.js -->
<script data-main="scripts/main" src="scripts/vendor/require.js"></script>
    <!-- endbuild -->
    <script>
    requirejs.config({

        paths: {

            'jquery'        : 'vendor/jquery',
            'handlebars'    : 'vendor/handlebars',
            'ember'         : 'vendor/ember',
            'ember-data'    : 'vendor/ember-data',
            'modernizr'     : 'vendor/modernizr' // This should be removed


        },

        baseUrl: 'scripts',


        shim: {


            'jquery' : {

                exports : 'jQuery'

            },

            'ember': {

                deps: ['jquery', 'handlebars'],
                exports: 'Ember'

            },

            'ember-data': {

                deps: ['ember'],
                exports: 'DS'

            },

            'handlebars': {

                exports: 'Handlebars'

            },

            'modernizr': {
                exports: 'Modernizr'
            }

        }

    }); …
Run Code Online (Sandbox Code Playgroud)

javascript modernizr requirejs

13
推荐指数
1
解决办法
8711
查看次数

具有Modernizr值的角度表达式?

如果没有针对新输入类型的html 5本机浏览器支持,我想显示不同的控件.

我希望做这样的事情:

 <p ng-show="{{Modernizr.inputtypes.datetime-local}}">Modernizr says datetime-local is supported!</p>
Run Code Online (Sandbox Code Playgroud)

然而,似乎Modernizr不适用于Angular表达式.

是这样的方法将我感兴趣的所有Modernizr值放在启动时的根镜上,这样它们可以用在表达式中还是有更好的方法?

javascript modernizr angularjs

13
推荐指数
1
解决办法
6754
查看次数

如果Chrome未通过标准测试,如何测试Touch-Events?

我曾经依赖

var supportsTouch = 'ontouchstart' in document;
Run Code Online (Sandbox Code Playgroud)

测试移动和桌面浏览器中的触摸支持.基于该测试,我将eventListeners绑定到click或touch事件.这适用于所有当前浏览器版本,但Chrome Canary(24.0.1275.0 canary)的最新更新,当然DEV版本未通过此测试.

我检查了当前的modernizr测试,但也返回了误报,这意味着它表明即使该功能被禁用,chrome也支持触摸.

我目前的解决方法是首先测试任何类型的移动浏览器,并且仅当返回肯定时使用上述测试来检查触摸.缺点是你不能在chrome的开发工具中使用方便的"模拟触摸事件"选项.想法?

html5 touch modernizr

12
推荐指数
1
解决办法
6886
查看次数

Modernizr的requireJS配置

我正在尝试加载使用requireJS动态检测的Modernizr功能. 由于Modernizr内置了AMD支持,这应该不是问题.

我的requireJS配置包含Modernizr源目录和功能检测目录的路径:

requirejs.config({
  paths: {
    "modernizr" : "components/modernizr/src",
    "feature-detects": "components/modernizr/feature-detects"
  }
});
Run Code Online (Sandbox Code Playgroud)

让我们假设我的一个观点需要svg测试.
我的视图定义可能如下所示

define(["feature-detects/svg"], function() { .. });
Run Code Online (Sandbox Code Playgroud)

遗憾的是svg.js找不到Modernizr.js因为所有功能都检测到并且Modernizr源文件加载Modernizr而没有指定任何目录:define(['Modernizr'], ...

这导致了一个非常难看的require.config

requirejs.config({
  paths: {
    "Modernizr": "components/modernizr/src/Modernizr",
    "addTest": "components/modernizr/src/addTest",
    "ModernizrProto": "components/modernizr/src/ModernizrProto",
    "setClasses": "components/modernizr/src/setClasses",
    "hasOwnProp": "components/modernizr/src/hasOwnProp",
    "tests": "components/modernizr/src/tests",
    "is": "components/modernizr/src/is",
    "docElement": "components/modernizr/src/docElement",
    "feature-detects": "components/modernizr/feature-detects"
  }
});
Run Code Online (Sandbox Code Playgroud)

有没有更简洁的方法告诉requireJS components/modernizr/src/无法找到文件时进行搜索?

更新

我创建了一个示例github项目,其中包括基本设置和运行演示.

javascript modernizr requirejs

12
推荐指数
2
解决办法
1万
查看次数

检测地理支持

有没有办法用JavaScript检查客户端浏览器是否支持GEO-URI方案

我想将不支持的浏览器的坐标显示为地图的链接

<a href='http://osm.org/#map=18/52.51627/13.37769'>Berlin</a>
Run Code Online (Sandbox Code Playgroud)

以及支持的浏览器(如智能手机)作为其本机应用程序的链接.

<a href='geo:52.51627,13.37769'>Berlin</a>
Run Code Online (Sandbox Code Playgroud)

javascript progressive-enhancement graceful-degradation modernizr polyfills

12
推荐指数
1
解决办法
1683
查看次数