使用modernizr有条件地加载javascript

时间:2015-01-13 09:13:12

标签: javascript jquery media-queries parallax modernizr

我正在建立一个视差网站,我想关闭小视口上的视差滚动效果(我想关闭低于460px的视口的视差脚本)

我使用Modernizr做了一些简单的回退css修复,但无法弄清楚如何定位这个边界然后加载相关的js文件。

我使用scrollr.js来实现视差效果。

http://prinzhorn.github.io/skrollr/

感谢您的帮助!!!

2 个答案:

答案 0 :(得分:2)

老实说,使用实际的JavaScript加载器可能更有利,特别是因为Modernizr完全是关于HTML5和CSS3的功能检测,我相信没有任何本机支持JavaScript。当需要时,它由现已弃用的YepNope处理(见下文)。

您的问题的一些潜在脚本是Require.jsLABjsYepNope [已弃用]

还有其他一些功能,例如Head.js,但这基本上是一个完整的工具箱,它具有Modernizr,jQuery和其他几个库的功能。但是,对于你想要做的事情,它可能有点过于笨重。还有LazyLoad,它没有维护,但也应该能够为您提供所需的功能。

进一步阅读:

Quora Answer

ScriptJunkie Article (Same Author as Quora Answer)

答案 1 :(得分:2)

如果您在加载和执行脚本后不需要特殊的东西,例如有序执行或回调,那么很容易:

function loadJS(u){var r=document.getElementsByTagName("script")[0],s = document.createElement("script");s.src = u;r.parentNode.insertBefore(s,r);}

用法:

if(!Modernizr.feature){
    loadJS('path/to/script.js');
}

如果你使用的是jQuery,你可以这样做+然后你也有一个回调:

if(!Modernizr.feature){
    $.ajax({
        url: 'path/to/script.js',
        dataType: 'script',
        cache: true,
        global: false,
        crossDomain: true //good for debugging
    });
}

因此,在90%的案例中,您不需要特殊的加载脚本。