【问题标题】:Uncaught TypeError with Modernizr.LoadModernizr.Load 未捕获的 TypeError
【发布时间】:2014-05-07 08:48:30
【问题描述】:

我正在尝试使以下代码正常工作,以允许我使用日期选择器。虽然我以前有过这种工作的变体,但现在我无法在恢复后让它工作。

我在“Modernizr.load”行下方收到错误“Uncaught TypeError: undefined is not a function”

    <script>
Modernizr.load({
  test: Modernizr.inputtypes.date,
  nope: ['http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js', 'jquery-ui.css'],
    complete: function () {
        if (window.jQuery) {
            jQuery('input[type=date]').datepicker({
                dateFormat: 'yy-mm-dd'
            });
        }
    }
});

关于这个错误的原因有什么建议吗?

【问题讨论】:

  • 这可能对其他人有所帮助。搜索 Modernizr.mq 的 Uncaught TypeError 让我来到了这里。我没有意识到 mq() 媒体查询并不总是在脚本中,所以更新到最新版本的 Moderinzr 修复了它。

标签: javascript jquery datepicker modernizr


【解决方案1】:

我刚刚在您的 fiddle 中粘贴了一个简单的modernizr 自定义构建,它似乎适用于 Firefox:

但是,我不得不改变你加载 jquery-ui 的方式:只需用你想要的主题替换那个 cdn:

    nope: [
      'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js',
      'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js', 
      'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.css'],
    ....

Mins 是对的,这里是自定义构建:

【讨论】:

  • 注意:Modernizr 的自定义构建器自此答案以来已进行了改造。我不确定这是否仍然可能。但也许有人可以对此有所启发
【解决方案2】:

Uncaught TypeError: undefined is not a function 表示您正在尝试将某些东西作为不存在的函数来调用。在这种情况下,您通过引用调用了多个函数。

Modernizr.load 和 jQuery().datepicker。这意味着 Modernizr.load 不存在,在这种情况下,请确保 Modernizr.load checkbox is checked.如果是导致问题的日期选择器,那么您需要检查您的开发者工具网络日志以查看是否

  1. jQuery UI 正在下载
  2. 它被正确解析(控制台中没有为它抛出任何错误)。

另外,jQuery 1.4 已经 4 年半了!如果可以,请尝试使用较新的版本,以后的版本中有大量的速度改进!

【讨论】:

  • 我已经确定我有最新的 Modernizr 和 jQuery 1.9.1 并且一切似乎都可以正常加载。控制台现在显示错误已略有变化: Uncaught TypeError: undefined is not a function 1027:29 Modernizr.load.complete 1027:29 c modernizr-2.8.1.js:845 h modernizr-2.8.1.js:845 B modernizr-2.8.1.js:845 Modernizr.load modernizr-2.8.1.js:846(匿名函数)我怎么理解呢?是否与 Modernizr 无法处理 datepicker 测试有关?
【解决方案3】:

Modernizr.js 的开发 版本不包括load()。要获得此功能,您需要使用 library builder 并检查 Extra 部分中的 load 选项。

Modernizr团队给出的理由:

我们不包含它,因为它实际上是一个单独维护的 名为 yepnope 的库 - 你可以在 https://github.com/slexaxton/yepnope.js

更多: Uncaught TypeError: Object # has no method 'load' #307

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-07
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多