包括外部 js 和 requirejs



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

    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;
    }); 

我收到未捕获的引用错误:通过我的主文件中的路径引用外部文件时,未定义移动检测.js

我也尝试直接在文件顶部定义它,但没有运气。我错过了什么来阻止脚本加载并给我对象?

    define('mobiledetect', ['https://cdnjs.cloudflare.com/ajax/libs/mobile-detect/1.3.6/mobile-detect.min.js'], function () {
       var md = new MobileDetect(window.navigator.userAgent);
       return md;
   });

我建议使用 RequireJS 中的路径配置将移动检测设置为 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 示例以查看操作中的代码。 您将收到一条警报,说明您使用的是移动浏览器还是桌面浏览器。

此外,应MobileDetect参数mobiledetect以匹配new MobileDetect调用。

最新更新