Javascript/Jquery 注释在 IE 中导致错误

Posted

技术标签:

【中文标题】Javascript/Jquery 注释在 IE 中导致错误【英文标题】:Javascript/Jquery commenting causing errors in IE 【发布时间】:2011-10-01 15:58:26 【问题描述】:

因此,这篇文章与其说是“请帮我修复它”,不如说是“为什么要改变它才能使它起作用?”。所以我写了一些在 Firefox 和 chrome 中工作的 javascript/jquery,但是 IE 抛出了错误。

即使有来自 *** 用户的有用帖子,我也无法弄清楚。我最终偶然发现了答案(因为我似乎发现自己在编码方面做了很多工作)。

我的一位计算机科学教授教给我一种有点严格的评论风格,其中一个函数会有这样的评论:

//@ describe function
//@ params: param1 - function, param2 - function
//@ etc....

所以我愚蠢地把它扔到我的 javascript 中,却发现 IE 真的根本不关心这个。当我删除 @ 符号时,代码运行良好。

所以我的问题是为什么这会导致 IE 出现错误? '//' cmets 后面的内容不应该无关紧要吗?

【问题讨论】:

【参考方案1】:

它确实看起来像一些古怪的 IE 条件注释支持。看起来如果@是注释的第一个字符(无论它是以 //@ 还是 /*@ 开头,那么 IE 都会在 @ 符号之后查找条件注释指令。有关示例,请参见 http://msdn.microsoft.com/en-us/library/8ka90k2e(v=vs.94).aspx。

AlienWebguy 的建议应该可行,因为评论的第一个字符是 *。您也可以在 @ 符号前放一个空格:

// @ describe function
// @ params: param1 - function, param2 - function
// @ etc....

【讨论】:

【参考方案2】:

您可能正在考虑 docblock 注释,您希望将其包装在块注释语法中:

/**
 * Function does this
 * @param <string> $str The string
 * @param <array> $arr The array
 * @return <bool> true if string is in array, false if not
*/

我可以看到 IE 只是愚蠢的。即使有一个解释为什么你的//@ 不起作用,它也很可能是一个非常愚蠢的解释,而且很可能只有一小部分人甚至能够在我们的版本上重新创建它IE。

据我所知,IE 是唯一一个查看条件 cmets 的浏览器,因此我可以看到它们的注释解析器与所有其他浏览器不同,这会与其他正确的代码发生冲突。

【讨论】:

这可能就是这里发生的事情。好吧,感谢建议的 docblock 评论,我会试一试。感谢您的意见。 哦,谢谢!是的,我是该网站的新手,我不知道这是一个功能。如果我有足够的声誉,我也会为向上箭头加分 :) 但再次感谢您的输入

以上是关于Javascript/Jquery 注释在 IE 中导致错误的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript jquery IE检测

使用JavaScript / JQuery导出 html table 数据至 Excel 兼容IE/Chrome/Firefox

Javascript 在 chrome 中工作,而不是 firefox 或 ie

slideToggle 在 IE 9 中停止工作

在 IE7/IE8 中使用 :not() 伪类

使用 JavaScript/jQuery 滚动到 DIV 的顶部?