我已经编写了一个简单的Vanilla js插件,该插件使用文件读取器API来构建文件上传器组件;
https://github.com/Cerealkillerway/fileUploader
除了在ms-edge或ie上引发语法错误外,它工作正常。 在边缘,它将在updateLabel函数的左括号中引发错误: https://github.com/Cerealkillerway/fileUploader/blob/master/js/fileUploader.js
该函数出错:
let updateLabel = function(type, value) {
for (let label of instanceLabels[`${type}Labels`]) {
let labelSpan = label.querySelector(':scope > span');
let prevValue;
switch(value) {
case '++':
prevValue = parseInt(labelSpan.innerHTML) + 1;
labelSpan.innerHTML = prevValue;
break;
case '--':
prevValue = parseInt(labelSpan.innerHTML) - 1;
labelSpan.innerHTML = prevValue;
break;
default:
labelSpan.innerHTML = value;
}
}
};
答案 0 :(得分:0)
似乎MS Edge非常重视函数声明的想法。在其他浏览器允许您摆脱这种情况的地方,以下代码实际上是无效的(第790行):
for (let label in labelsClasses) {
function findLabel(container, labelsClasses, label) {
/* implementation */
}
}
函数声明只能在代码的“顶层”中声明。具体地说,这意味着它们只能在全局/模块范围内或在另一个函数声明的顶层创建。
更改声明以使用函数表达式:
for (let label in labelsClasses) {
let findLabel = function(container, labelsClasses, label) {
/* implementation */
}
}
答案 1 :(得分:0)
对于其他有类似问题的人,问题是由于remotes::install_github('rstudio/rmarkdown')
选择器所致,该选择器在edge或ie中均不受支持;
我已经通过为它导入一个polyfill(https://www.npmjs.com/package/element-qsa-scope)来解决了这个问题