【问题标题】:Unexplained JavaScript Behavior - Bug?无法解释的 JavaScript 行为 - 错误?
【发布时间】:2012-09-03 19:14:17
【问题描述】:

如果我将其复制并粘贴到我的网页中:

<script>
    $(function(){
        $("#startDate").datepicker();
    });​​​
</script>

我在浏览器中收到此错误:

Uncaught SyntaxError: Unexpected token ILLEGAL

但是,使用完全相同的代码,如果我只是删除最后的分号并再次添加它,代码会在 VS 2012 中格式化,然后就可以工作了。为什么?我认为 JavaScript 的间距不重要吗?

如果我粘贴相同的代码并自己添加间距,它仍然不起作用。我必须手动输入,或者删除并再次添加分号。这可能是一个错误吗?我错过了一些基本的东西吗?

这是页面内的全部代码:

@{
    Layout = null;
}

    <!DOCTYPE html>

    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Index</title>
        <script src="~/Scripts/jquery-1.7.1.min.js"></script>
        <script src="~/Scripts/jquery-ui-1.8.20.min.js"></script>
        <script>
            $(function(){
                $("#startDate").datepicker();
            });​​​
        </script>
    </head>
    <body>
        <div>
            <h2>Home View</h2>
            <input type="text" id="startDate">
        </div>
    </body>
    </html>

为了完整起见,这是有效的代码:

<script>
    $(function () {
        $("#startDate").datepicker();
    });
</script>

我看不出有什么区别,除了间距。就像我说的那样,我可以使用带有空格的 exact 代码,除非我删除并添加分号,否则它会失败。

【问题讨论】:

  • 获取“损坏的”代码并将其复制到 Notepad++ 中,然后进入查看 -> 显示符号并选择显示所有字符。你有没有看到不应该出现的东西?
  • 你有没有可能在 jsfiddle 中尝试过该代码,然后从那里复制/粘贴?这似乎是造成这种情况的常见原因。
  • 是的,我相信我确实做到了。但是在我尝试小提琴之前,事情就被打破了。 (因此完全尝试小提琴。)
  • 我会很感激投反对票的人解释自己,这样我就可以从中学习。当我不知道这是问题所在时,我不确定如何将其视为重复。

标签: javascript jquery asp.net razor asp.net-mvc-4


【解决方案1】:

分号后面有一些垃圾字符需要清理。

如果我将您在 SO 中的确切文本粘贴到 Wordpad++ 中,则显示如下:

<script>
    $(function(){
        $("#startDate").datepicker();
    });???
</script>

其中显示了一些非法字符。

【讨论】:

  • 我现在也看到了。但是,当我将它粘贴到我的代码文件中时,在 VS 中,这些字符不存在。如果我将光标放在分号后面,我必须在分号消失之前点击四次删除。所以,是的,那里有一些垃圾。不知道如何/为什么。
  • 所以实际上并没有删除分号。事实上,我正在删除垃圾(在删除分号的路上)。谢谢。
  • @BobHorn 是的,没错。很久以前我就回答了同样的问题,因为这个问题一直得到支持,我怀疑这是由同一个行为不端的编辑器(可能是 VisualStudio 本身)引起的常见问题。
  • @BobHorn - 你的编辑器在哪里有一些非 ascii 内容时显示的内容完全取决于编辑器。关键是里面有垃圾需要清理。
【解决方案2】:

查看浏览器中的代码 - 点击查看源代码 - 并仔细检查您的 IDE 没有添加一些破坏 javascript 的额外代码。

在 chrome 中按 Ctrl-U 查看源代码。

【讨论】:

  • 这不应该被否决,因为它完全正确。那里可能有一个奇怪的unicode空格字符。 编辑好吧,也许“精确”有点强,因为我们不知道角色是什么。
  • 浏览器源码没有显示垃圾字符,但 Notepadd++ 有。感谢您的提示。
猜你喜欢
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多