我的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
调用。