包括带有requirejs的外部js

时间:2018-01-18 22:14:16

标签: jquery requirejs

我的js文件中有以下内容,由requirejs

调用
    height:auto!important;

我得到未捕获的ReferenceError:在我的main.js文件中通过路径引用外部文件时未定义MobileDetect

我已尝试直接在文件顶部定义它,但没有运气。我错过了什么让脚本不加载并给我这个对象?

    define([
      'jquery',
      'backbone',
      'mobiledetect'
    ],
 function($, Backbone, mobiledetect) {
  var MobileCheckView = Backbone.View.extend({
     initialize: function(){
     var md = new MobileDetect(window.navigator.userAgent);
     if (md.mobile() || md.phone() || md.tablet()) {
        $('#mho_app').popup('show');
     } 
     }
    });
     return MobileCheckView;
    }); 

1 个答案:

答案 0 :(得分:1)

我建议使用RequireJS中的paths配置将mobiledetect设置为URL,就像这样。请注意,“。js”不在URL中。 RequireJS会自动添加“.js”扩展名。

require.config({
  paths: {
    'mobiledetect': 'https://cdnjs.cloudflare.com/ajax/libs/mobile-detect/1.3.6/mobile-detect.min'
  }
});
require(['mobiledetect'], function (MobileDetect) {
  var md = new MobileDetect(window.navigator.userAgent);
  if (md.mobile() || md.phone() || md.tablet()) {
    alert('Mobile Device');
  }
  else {
    alert('Must be a desktop?');
  }
});

请参阅此JSFiddle example以查看正在运行的代码。您将收到一条警报,说明您是使用移动设备还是桌面浏览器。

此外,参数mobiledetect应为MobileDetect以匹配new MobileDetect来电。