1

我有一个 HTML 页面,例如:

<html>
<head>
    <title>Test Page</title>
    <script type="text/javascript"
      src="http://svn.ckeditor.com/CKEditor/releases/latest/ckeditor_basic_source.js"></script>
    <script type="text/javascript">
        //@x=y
    </script>
</head>

<body>
Test Page
</body>
</html>

注释//@x=y在 IE 10 中作为代码执行,浏览器抱怨'y' is undefined

最小测试用例

如果出现以下情况,浏览器将停止抱怨:

  • 我删除 CKEditor 脚本
  • 删除@字符
  • 更改<script/>标签的顺序

这里可能出了什么问题?

更新:我将根本原因缩小到CKEditor 的core/env.js文件中的条件编译语句。

if ( !CKEDITOR.env )
{
    /**
     * @namespace Environment and browser information.
     */
    CKEDITOR.env = (function()
    {
        var agent = navigator.userAgent.toLowerCase();
        var opera = window.opera;

        var env =
        /** @lends CKEDITOR.env */
        {
            /**
             * Indicates that CKEditor is running on Internet Explorer.
             * @type Boolean
             * @example
             * if ( CKEDITOR.env.ie )
             *     alert( "I'm on IE!" );
             */
            ie      : /*@cc_on!@*/false,
...

如果我删除该/*@cc_on!@*/评论,一切都会按预期进行。

4

1 回答 1

0

我认为这是由 CKEditor 中包含的条件编译语句引起的。如果/*@cc_on@*/设置了,IE10 会将紧随其后的部分识别//@为它应该执行的 JavaScript 代码。jQuery 团队在这里遇到了这个错误的一个变种。将部分包装//@在块注释中,就像/*//@x=y*/解决问题一样。

CKEditor 团队已就此提交了错误报告

于 2013-07-26T21:00:25.180 回答