0

我有一个 MVC4 项目并且在使用 Modernizr 时遇到问题。我想测试一下是否支持html输入类型日期。如果没有,则加载 kendoUI(类似于 jquery-UI)以显示我使用日期输入类型作为日期选择器控件的所有实例。仅当不支持日期的输入类型时,我才使用下面的脚本加载我的剑道 css 和 js 文件。

<script>
    Modernizr.load({
        test: Modernizr.inputtypes.date,
        nope: ['/Content/Kendo-styles/kendo.common.min.css',
            '/Content/Kendo-styles/kendo.default.min.css',
            '/Scripts/kendo/kendo.web.min.js'],
        complete: function () {
            $('input[type=date]').kendoDatePicker({
                format: "dd/MM/yyyy"
            });
        }
    });
</script>

我把它放在我页面的脚本部分(不是_Layout/master,而是在下一层)。它可以工作,但我会闪烁。它似乎加载了我的脚本,然后在运行完整功能之前显示我的页面,因此先显示一个文本框,然后再显示大约。半秒后将日期选择器呈现在其位置。

如果我删除完整的函数并将以下脚本添加到我的文档就绪函数中,它有时会失败。在这种情况下,我可以看到(在浏览器开发人员工具 - 网络中)剑道脚本已下载但尚未执行,因此无法识别 kendodatepicker。在这种情况下,我只能假设准备好的文档将在 Modernizer 完成之前运行。我这个对吗?下面是我的文档就绪代码。

$(function () {    
    if (!Modernizr.inputtypes.date) {
        $('input[type=date]').kendoDatePicker({
            format: "dd/MM/yyyy",
        });            
    }
}

有谁知道这个问题的解决方案,或者我正在做一些愚蠢的事情..

4

1 回答 1

0

半秒是因为它必须下载 3 个文件然后运行该功能。

我提倡预加载 CSS(它是轻量级的),由于您使用的是 mvc4,您可以将其添加到捆绑包中,并且不会在生产中添加任何额外的请求

这将使它更快

于 2012-07-11T15:02:07.400 回答