Edge浏览器JavaScript报错:TypeError: Function expected 问题咨询
解决Edge浏览器中TypeError: Function expected的问题
嘿,我帮你分析下代码里可能触发这个错误的几个点:
1. 未完成的Promise错误回调
首先一眼就看到你代码里的then方法第二个参数只写了fu...,这明显是个没写完的函数定义啊!Edge在解析这种不完整的语法时,会把它当成一个未定义的变量,而不是预期的错误处理函数,直接就抛出Function expected了——这应该是最直接的问题。
修复方式:
要么补全完整的错误处理函数,比如:
srcToFile(blob, fileName, "image/jpeg") .then(function (file) { var formData = new FormData(); formData.append("file", file); PassingBlobToServer(formData); }, function(error) { // 这里可以加错误日志,方便排查 console.error("图片转换失败:", error); })
要是暂时不需要处理错误,也可以直接省略第二个参数,改用.catch()来统一捕获错误,这样代码更清晰:
srcToFile(blob, fileName, "image/jpeg") .then(function (file) { var formData = new FormData(); formData.append("file", file); PassingBlobToServer(formData); }) .catch(function(error) { console.error("处理图片时出现异常:", error); });
2. Edge对DOM元素的兼容性细节
另外,旧版Edge(基于EdgeHTML内核的那种)在处理DOM属性时和Chrome/Firefox有细微差异:
- 先确认
value.cells[5]确实存在:表格行的列索引是从0开始的,要是你的表格每行不足6列,value.cells[5]会是undefined,调用innerText会出错,虽然这个错误通常是“无法读取undefined的属性”,但也可能间接引发后续的函数预期错误。 - 可以试试把
innerText换成textContent,innerText会受元素渲染状态影响,而textContent是标准的DOM文本获取属性,在旧Edge里兼容性更好:
var blob = value.cells[5].textContent;
3. 自定义函数srcToFile的兼容性检查
如果srcToFile是你自己写的函数,得确认它在Edge里能正常返回Promise。旧版Edge对ES6的Promise特性支持不全,比如函数里要是用了箭头函数、async/await但没转译,或者没有正确返回Promise实例,都可能导致回调函数不被识别,抛出“预期函数”的错误。
建议检查srcToFile的实现,必要时用Babel转译ES6+语法,或者给Promise加个polyfill,确保Edge能正常处理。
内容的提问来源于stack exchange,提问作者Nguyễn Minh Vương
相关产品推荐
相关产品推荐

