IE不';无法识别Javascript类和中断
我编写了一些Javascript代码,在所有主流浏览器中都能完美运行。当然,我通过创建一个函数来确定用户正在使用的浏览器,从而确保Internet Explorer不会执行这些操作 但问题是:即使我告诉IE不要执行代码,浏览器仍然会读取我所有的Javascript,因为它发现了一些它无法识别的东西,所以它会停止运行任何其他Javascript 我能想到的唯一一件事就是创建一个函数,如果用户使用IE,该函数将返回,但这似乎不起作用,因为我认为问题来自IE最初解析我的脚本,而无法理解现代JS语法 以下是我的代码的简化版本:IE不';无法识别Javascript类和中断,javascript,internet-explorer,Javascript,Internet Explorer,我编写了一些Javascript代码,在所有主流浏览器中都能完美运行。当然,我通过创建一个函数来确定用户正在使用的浏览器,从而确保Internet Explorer不会执行这些操作 但问题是:即使我告诉IE不要执行代码,浏览器仍然会读取我所有的Javascript,因为它发现了一些它无法识别的东西,所以它会停止运行任何其他Javascript 我能想到的唯一一件事就是创建一个函数,如果用户使用IE,该函数将返回,但这似乎不起作用,因为我认为问题来自IE最初解析我的脚本,而无法理解现代JS语法 以
class Section {
constructor(dom, startPosition, endPosition, backgroundPosition) {
this.dom = dom;
this.startPosition = startPosition;
this.endPosition = endPosition;
this.backgroundPosition = backgroundPosition;
}
}
function isIE() {
ua = navigator.userAgent;
/* MSIE used to detect old browsers and Trident used to newer ones*/
var is_ie = ua.indexOf("MSIE ") > -1 || ua.indexOf("Trident/") > -1;
return is_ie;
}
let sections = [];
function sectionParallax() {
if (!isIE()) {
sections.push( new Section("test", 123, 123, 123))
}
}
IE的控制台报告:
SCRIPT1002: Syntax error
在课程部分
我完全不知道该在这里做什么。如何确保IE不加载这部分代码?JS解析器必须解析您告诉它加载的JavaScript,即使它是一个从未执行过的函数 如果要阻止IE加载它,请不要加载包含它的
。这意味着您需要动态添加
,如果浏览器确实支持该功能
如果您需要支持IE,那么不要将JS交付给使用IE无法识别的语法的浏览器。考虑使用像Babel[Bael]这样的工具将它转换成一个较旧版本的JavaScript,IE确实支持它。 < p>在加载脚本之前,可以检查<代码> IE < /> >:
不支持IE浏览器,因此,在IE浏览器中,它将显示“SCRIPT1002:语法错误”错误
您可以按如下方式修改代码:
var Section = /** @class */ (function () {
function Section(dom, startPosition, endPosition, backgroundPosition) {
this.dom = dom;
this.startPosition = startPosition;
this.endPosition = endPosition;
this.backgroundPosition = backgroundPosition;
}
return Section;
}());
function isIE() {
ua = navigator.userAgent;
/* MSIE used to detect old browsers and Trident used to newer ones*/
var is_ie = ua.indexOf("MSIE ") > -1 || ua.indexOf("Trident/") > -1;
return is_ie;
}
var sections = [];
function sectionParallax() {
if (!isIE()) {
/*If not using IE browser. */
var newsection = new Section("test", 123, 123, 123);
sections.push(newsection);
}
}
可能的重复:虽然第一行应该是
,但您的方式对我不起作用。实际上,仔细检查,这似乎不起作用,IE仍然加载所有脚本。Damna根据文档,它似乎适用于IE10和以前的版本,上面没有任何内容。
var Section = /** @class */ (function () {
function Section(dom, startPosition, endPosition, backgroundPosition) {
this.dom = dom;
this.startPosition = startPosition;
this.endPosition = endPosition;
this.backgroundPosition = backgroundPosition;
}
return Section;
}());
function isIE() {
ua = navigator.userAgent;
/* MSIE used to detect old browsers and Trident used to newer ones*/
var is_ie = ua.indexOf("MSIE ") > -1 || ua.indexOf("Trident/") > -1;
return is_ie;
}
var sections = [];
function sectionParallax() {
if (!isIE()) {
/*If not using IE browser. */
var newsection = new Section("test", 123, 123, 123);
sections.push(newsection);
}
}