有些用户在我的网站上偶尔会报告JS错误.错误消息显示"预期标识符,字符串或数字",行号为423725915,这只是一个任意数字,并在发生这种情况时为每个报告更改.这主要发生在IE7/Mozilla 4.0浏览器上.
我扫描了我的代码了很多次并运行了jslint但它没有选择任何东西 - 任何人都知道导致此错误消息的JS问题的一般类型?
ame*_*der 143
这种类型的错误的原因通常可能是对象或数组定义中的错误逗号:
var obj = {
id: 23,
name: "test", <--
}
Run Code Online (Sandbox Code Playgroud)
如果它出现在随机线上,也许它是动态创建的对象定义的一部分.
Roy*_*Han 82
使用单词class作为Javascript词典中的键也可以触发可怕的"预期标识符,字符串或数字"错误,因为class是Internet Explorer中的保留关键字.
坏
{ class : 'overlay'} // ERROR: Expected identifier, string or number
Run Code Online (Sandbox Code Playgroud)
好
{'class': 'overlay'}
Run Code Online (Sandbox Code Playgroud)
在Javascript词典中使用保留关键字作为键时,请将键括在引号中.
希望这个提示可以为你节省一天的调试时间.
cjs*_*hno 11
实际上我最近在IE上得到了类似的东西,它与JavaScript语法"错误"有关.我说引号错误,因为它在IE上无处不在.这是在IE6下.该问题与JSON对象创建和额外的逗号有关,例如
{ one:1, two:2, three:3, }
Run Code Online (Sandbox Code Playgroud)
IE6真的不喜欢3之后的逗号.你可能会寻找类似的东西,敏感的小语法形式问题.
是的,我认为我的25行JavaScript中的数百万行号也很有趣.
祝好运.
这是一个明确的答案:消除一个诱人但错误的答案,以帮助其他人找到正确的答案.
看起来调试可能会突出显示问题.但是,问题出现的唯一浏览器是IE,而在IE中,您只能调试作为原始文档一部分的代码.对于动态添加的代码,调试器只显示body元素作为当前指令,IE声称错误发生在一个巨大的行号上.
这是一个示例网页,将在IE中演示此问题:
<html>
<head>
<title>javascript debug test</title>
</head>
<body onload="attachScript();">
<script type="text/javascript">
function attachScript() {
var s = document.createElement("script");
s.setAttribute("type", "text/javascript");
document.body.appendChild(s);
s.text = "var a = document.getElementById('nonexistent'); alert(a.tagName);"
}
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
这让我产生了以下错误:
Line: 54654408
Error: Object required
Run Code Online (Sandbox Code Playgroud)
刚看到我的一个应用程序中的错误,作为一个包罗万象,请记住将与关键字相同的所有javascript属性的名称括起来。
遇到对象如下的错误后发现此错误:
var x = { class: 'myClass', function: 'myFunction'};
Run Code Online (Sandbox Code Playgroud)
生成错误(类和函数是关键字),此错误已通过添加引号解决了
var x = { 'class': 'myClass', 'function': 'myFunction'};
Run Code Online (Sandbox Code Playgroud)
我希望能节省您一些时间
| 归档时间: |
|
| 查看次数: |
171451 次 |
| 最近记录: |