【发布时间】:2016-08-19 12:03:05
【问题描述】:
我试图在之前的问题中找到解决方案,但我找不到。 我有一个使用 requireJS 在 jquery 中开发的 web 项目。一切似乎都运行良好(在所有现代浏览器中),直到我在没有脚本工作的 IE9 中进行测试。我试图找到原因,但我能得到的只是开发工具控制台的反馈:
SCRIPT1002:语法错误 libCommon.js,第 10 行字符 3
SCRIPT445:对象不支持此操作 libEvents.js,第 5 行 字符 2
这是 libCommon.js 的开始代码:
//generic JS for all views
define(['jquery'], function ($) {
var LibCommon = function () {};
LibCommon.prototype.hideSubmenu = function() {
$submenu.removeClass('show');
}
LibCommon.prototype.toggleSubmenu = function(tipo) {
const $tipoSubmenu = $('#'+tipo);
this.hideSubmenu();
if (!$tipoSubmenu.hasClass('show')) {
$tipoSubmenu.addClass('show');
} else {
$tipoSubmenu.removeClass('show');
}
};
//and other functions...
这是 libEvents.js 的开始代码:
//generic JS for all views
define(['jquery', 'bootstrap', './libCommon', 'modernizr'], function ($, Bootstrap, LibCommon, Modernizr) {
var common = new LibCommon();
/**
* =================
* TO EXECUTE WHEN INIT
* =================
*/
$( document ).ready(function() {
console.log('initialized all common events');
var common = new LibCommon();
// Fixed header
var stickyNavTop = $('.topmenu').offset().top;
common.fixedNav(stickyNavTop);
$(window).scroll(function() {
common.fixedNav(stickyNavTop);
});
// and other functions or events...
在这两个错误中,它是在 requireJS 中定义所有对象/依赖项之后创建对象的变量/实例的第一个字符,因此它不应该是错误。我尝试更改为var common = 0;,但控制台中继续出现错误。似乎 IE9 不喜欢任何脚本。否则,require 的实例正在工作,因为引导程序正常工作。有什么想法吗?
【问题讨论】:
-
IE9 不支持 ES6,所以我认为是
const $tipoSubmenu = $('#'+tipo);行有问题,因为 IE9 不识别 const。你有modernizr 或不同的shim,所以你可以使用ES6 语法吗? -
你是对的。删除 const 行使所有 js 代码加载成功,IE9 解释所有 JS。遗憾的是 IE9 控制台没有给你正确的错误行,所以我找不到它。谢谢@Shilly
标签: javascript jquery requirejs internet-explorer-9