Make Modernizr.load()将脚本添加到页面末尾

时间:2012-05-03 17:19:08

标签: javascript modernizr yepnope polyfills

如果此功能不可用,我使用Modernizr检查功能,即csscolumns,并运行Modernizr.load()以使用css3-multi-column.js polyfill。除了Modernizr / yepnope在Modernizr脚本元素之前以及样式表之前插入脚本这一事实外,这一切都很好。由于Modernizr将脚本添加到页面末尾,因此我希望在所有样式表之后包含css3-multi-column.js。这可能吗?

这是我的代码:

Modernizr.load({
    test: Modernizr.csscolumns,
    nope: 'http://host.org/js/libs/css3-multi-column.js';
});

如果可能的话,这就是我想用Modernizr完成的事情:

if (!Modernizr.csscolumns) {
    var script = document.createElement( 'script' );
    script.type = "text/javascript";
    script.src = 'http://host.org/js/libs/css3-multi-column.js';
    $('body').append(script);
}

1 个答案:

答案 0 :(得分:1)

我只是偶然发现了同样的问题,并查看了 Modernizr yepnope.js)代码,这绝对不可能在页面末尾添加脚本。

所以,不幸的是,你的解决方案很好。

另一种可能的解决方案是将 Modernizr 放在页面底部(但IE8会中断,请参阅底部注释here)?

另外,在我的情况下,我的所有样式表都在 Modernizr 插入的css3-multi-column.js脚本之前,但它也没有用。但使用您的方法可以解决问题。使用您的方法,它也可以在追加到HEAD时使用。所以问题不在于插入脚本的地方而是其他的东西?