0

附件是开发者控制台的截图。我在闭包定义中看到语法错误。

JavaScript 语法错误

我有一个 JavaScript 文件,它具有以下功能。我正在从另一个函数加载 JavaScript 文件并从中调用sampleFunction()

var sampleFuntion=function(obj){
    //Statement here;
};

但是 Firefox 显示第一行的语法错误,即函数声明/定义。

我在 Windows 7 上使用 Mozilla Firefox 29.0.1。

代码中的实际错误是什么?

4

3 回答 3

2

由于指示的脚本行不包含任何视觉语法错误,因此问题可能是该行内的不可见非法字符,例如零宽度空格。在这种情况下,只需重写您的函数并确保将所有内容替换到文件的开头。

或者行号在控制台中显示不正确,错误实际上是在其他地方。要测试这一点,只需从脚本中删除该函数,然后查看第一行是否仍然显示语法错误。如果是这样,您可以删除脚本的其他部分,并在错误消失时逐步检查。

检查它是否是 Firefox 中的错误的另一种方法是使用另一个浏览器确认该错误,即查看它是否也显示在其他 DevTools 控制台的同一行中。如果不是,您应该创建一个新的 Firefox 配置文件来测试错误消息是否真的来自您的代码。如果新配置文件未显示错误,则错误很可能是由某些附加组件或插件引起的。

关于这一点的一点小提示:

Firebug 大多数时候还提供有关发生语法错误的列的信息并指出确切的位置:

Firebug 中显示列的语法错误

于 2014-05-28T20:50:40.220 回答
1

这是由于 HTTP 请求的 Response Headers 中返回的“ Content-Type ”/“ MIME Type ”(或媒体类型)[Content & Mime Types, both are not exactly the same]和Content的类型不同造成的正在从文件中加载(在这种情况下,它的“ JavaScript ”内容)。如果未提及 MIME 类型,则 Firefox 默认将“ Content-Type ”假定为“ application/xml ”,这不是正确的类型。

可以使用以下方法验证默认内容类型:

yourXHRObject.getResponseHeader('Content-Type');

因此,Firefox 开发工具会抛出上述错误(是的,FF 没有给出任何线索!!!)

解决方案:

yourXHRObject.overrideMimeType(' text/javascript '); 或 yourXHRObject.overrideMimeType(' application/javascript ')

GitHub 线程中所述,在发送请求之前。即使将“text/plain”发送到 overrideMimeType(),错误也会消失。但是,从技术上讲,上述之一比“文本/纯文本”更贴切。

于 2016-10-02T22:13:50.707 回答
-1

The only instance of "not well-formed" that I can find within the Firefox codebase is from within the XML parser... Please check that you're including the script correctly.

It's also possible that "line 1" refers to e.g. an eval or innerHTML set or similar done from within constant.js.

于 2014-05-28T12:41:12.263 回答