这怎么会同时提示是和错误?

Modernizr.load([
    {
        test: Modernizr.cssgradients,
        yep: alert('Supports it!'),
        nope: alert('Oh, damn! This browser sucks!')
    }
]);

我在 OS X 上使用最新的 chrome。

最佳答案

因为您在那里直接调用 alert(),并且 alert() (始终为 undefined )的结果被分配给 yepnope 属性。您需要将 alert() 包装在一个函数中并改为分配该函数:

Modernizr.load([
    {
        test: Modernizr.cssgradients,
        yep: function () { alert('Supports it!') },
        nope: function () { alert('Oh, damn! This browser sucks!') }
    }
]);

这仍然不起作用,因为这不是 yepnope 的工作方式。 yepnope 应该是加载的 JS 文件的路径:
Modernizr.load([
    {
        test: Modernizr.cssgradients,
        nope: 'cssgradients-shim.js'  //-> load a JS file to draw your gradients
    }
]);

正如您自己发现的那样,如果您不想使用集成的 yepnope.js,您可以按照传统方式使用 Modernizr:
if (!Modernizr.cssgradients) {
    alert('Oh, damn! This browser sucks!');
}

关于javascript - 现代化测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7808585/

10-13 02:59