边说 Babel 代码预期的功能
Edge saying Function expected on Babel'ed code
我有一些非常简单的代码通过 Webpack -> Babel 运行:
let isOn = false;
const videoTag = doc.getElementsByTagName('video')[0];
const trackTag = doc.createElement('track');
const id = someGlobalIHave;
function setMode() {
const tracks = [...videoTag.textTracks].filter(t => t.kind === 'captions');
tracks.forEach(track => {
track.mode = isOn ? 'showing' : 'hidden';
});
}
trackTag.setAttribute('default', '');
trackTag.setAttribute('src', `/mysource/${id}/captions`);
trackTag.setAttribute('kind', `captions`);
videoTag.appendChild(trackTag);
setMode();
我的全局错误处理程序仅向我发送 Edge 17 的错误 Function expected
,第 6 行第 8029 列的可爱缩小位置。
差不多等于:
function s(){
[...r.textTracks].filter(e=>"captions"===e.kind)
.forEach(e=>{e.mode=n?"showing":"hidden"})}
我的光标显示我在左旋和左方括号之间的 8029 处。
我在这里缺少什么特殊的 Edge 东西?
更新
这是在 Simo 回答后 运行 在控制台中的一些代码
// doc is defined above from document being passed into method
const videoTag = doc.getElementsByTagName('video')[0];
const x = [1];
[...videoTag.textTracks] // just running this line throws Function expected
Array.from(videoTag.textTracks) // works as expected
[...x,2] // returns [1,2]
videoTag.textTracks.filter(t => true); // Object doesn't support property or method 'filter'
我认为 Edge 在迭代器协议方面存在问题,因此也许您可以尝试用 Array.from
之类的东西替换扩展运算符。
基本上您无法在 NodeList 上迭代或使用扩展运算符。
我上次检查时,IE edge 不支持扩展运算符。
您不需要在您的案例中使用传播运算符。数组过滤器已经创建了一个新数组。
const tracks = videoTag.textTracks.filter(t => t.kind === 'captions');
tracks.forEach(track => {
track.mode = isOn ? 'showing' : 'hidden';
});
我有一些非常简单的代码通过 Webpack -> Babel 运行:
let isOn = false;
const videoTag = doc.getElementsByTagName('video')[0];
const trackTag = doc.createElement('track');
const id = someGlobalIHave;
function setMode() {
const tracks = [...videoTag.textTracks].filter(t => t.kind === 'captions');
tracks.forEach(track => {
track.mode = isOn ? 'showing' : 'hidden';
});
}
trackTag.setAttribute('default', '');
trackTag.setAttribute('src', `/mysource/${id}/captions`);
trackTag.setAttribute('kind', `captions`);
videoTag.appendChild(trackTag);
setMode();
我的全局错误处理程序仅向我发送 Edge 17 的错误 Function expected
,第 6 行第 8029 列的可爱缩小位置。
差不多等于:
function s(){
[...r.textTracks].filter(e=>"captions"===e.kind)
.forEach(e=>{e.mode=n?"showing":"hidden"})}
我的光标显示我在左旋和左方括号之间的 8029 处。
我在这里缺少什么特殊的 Edge 东西?
更新
这是在 Simo 回答后 运行 在控制台中的一些代码
// doc is defined above from document being passed into method
const videoTag = doc.getElementsByTagName('video')[0];
const x = [1];
[...videoTag.textTracks] // just running this line throws Function expected
Array.from(videoTag.textTracks) // works as expected
[...x,2] // returns [1,2]
videoTag.textTracks.filter(t => true); // Object doesn't support property or method 'filter'
我认为 Edge 在迭代器协议方面存在问题,因此也许您可以尝试用 Array.from
之类的东西替换扩展运算符。
基本上您无法在 NodeList 上迭代或使用扩展运算符。
我上次检查时,IE edge 不支持扩展运算符。 您不需要在您的案例中使用传播运算符。数组过滤器已经创建了一个新数组。
const tracks = videoTag.textTracks.filter(t => t.kind === 'captions');
tracks.forEach(track => {
track.mode = isOn ? 'showing' : 'hidden';
});