未捕获的SyntaxError:意外的标记=

我刚刚从使用缩小版本的d3.v3的本地副本切换到开发版本。 它在使用缩小版本时工作正常,但使用我的本地副本http://d3js.org/d3.v3.js给了我标题中的错误,引用此行:

var € = Math.PI, µ = 1e-6, d3_radians = € / 180, d3_degrees = 180 / €;

当我包含托管文件时,它工作正常。


问题在于,您使用ISO-8859-1字符编码(通常是浏览器默认值)为D3服务,而D3必须以UTF-8编码提供服务。 通常会发生这种情况,因为您在加载HTML页面的顶部缺少一个元标记:

<!DOCTYPE html>
<meta charset="utf-8">

元指定的字符集是必需的,因为d3js.org由GitHub Pages提供服务,并且未在Content-Type响应头中指定字符集。 因此,字符集是从加载HTML文档中推断出来的。

如果你愿意,你可以在脚本标签上指定一个字符集属性。 请确保在测试之前清除浏览器缓存,因为缓存副本将保留最初访问时的字符编码:

<script src="http://d3js.org/d3.v3.js" charset="utf-8"></script> 

缩小版本不会发生此错误,因为变量名称将替换为ASCII等效项。 (如果格式化字符串中的UTF-8字符同样被换码序列替换,我不会记得,但我仍然推荐在所有情况下都将D3作为UTF-8。)

如果您通过在浏览器中查看源代码并使用复制粘贴来下载D3,也可能发生编码问题,这就是为什么我建议您下载d3.v3.zip。


这绝对是一个编码问题,试着着重于此。

用Chrome打开你发布的链接(http://d3js.org/d3.v3.js),我也看到了双字节字符:

 var π = Math.PI, ε = 1e-6, d3_radians = π / 180, d3_degrees = 180 / π;

如果你几乎不用“保存页面...”保存文件,并用Sublime Text(http://www.sublimetext.com/)这样的编辑器打开它,它可以正常工作,并显示:

var π = Math.PI, ε = 1e-6, d3_radians = π / 180, d3_degrees = 180 / π;

我试图使用这个下载的文件与我的项目,这是没问题的。

链接地址: http://www.djcxy.com/p/46037.html

上一篇: Uncaught SyntaxError: Unexpected token =

下一篇: How can I apply SmartyStreets validation to two forms in the same page?