1

我第一次使用modernizr 并面临一些问题。

以下是我已完成的步骤:

在 html 页眉加载 Modernizr 在 html 页脚加载 JQuery

在准备好的 Jquery 文档中,我使用 Modernizr 检查了几个浏览器功能。如果该检查失败,它将重定向到另一个页面。

大多数情况下,使用 Modernizr 内部文档就绪检查工作正常,但有时它会失败并重定向到另一个页面,即使是从同一个浏览器。

我猜这是因为在 Modernizr 之前准备好加载文档,因此 Modernizr 无法工作。你有什么可以帮助我的吗?

$(function() { 
    //if browser can't provide certain features, it will redirect the browser to dumb phone page

    if(satisfiedWithBrowser()){
        // do other stuff
    }else
        window.location = 'redirect/';
});

function satisfiedWithBrowser(){    
    //console.log(Modernizr);

    if(!Modernizr.csstransforms || !Modernizr.backgroundsize || !Modernizr.cssanimations || !Modernizr.hashchange) // || !Modernizr.touch)
        return false;
    else
        return true;
}

谢谢

4

1 回答 1

0

是的,听起来你有竞争条件,我想说有两种选择:

  • 将现代化器移动到页脚中的 jQuery 旁边,以便在之前请求它。
  • 而不是等待$(document).ready()使用$(window).load()

第一个选项应该对您的问题进行排序。原因 - 至少就我一直理解的脚本标签的放置而言 - 是当脚本标签位于正文中时,它会在找到/解析时被请求,而头部中的脚本标签将在不同时间触发取决于浏览器(和缓存状态)。您基本上需要使用相同的方法加载两个脚本标签(要么都在页脚,要么都在头部)

第二个选项应该作为后备选项,因为不是等待 DOM 准备就绪,而是等待 window.load ,这应该包括等待所有资源。

于 2012-09-11T12:57:51.180 回答