代码之家  ›  专栏  ›  技术社区  ›  user656925

IE9报告缺少存在的分号

  •  2
  • user656925  · 技术社区  · 12 年前

    我通过创建一个脚本标记并在其中的.innerHTML中编写javascript来动态加载一些.js。

    我收到以下错误:

    SCRIPT1004: Expected ';' 
    develop, line 1487 character 24
    

    这毫无意义。。。所以我猜它报告的行号是正确的还是错误的(我至少很高兴它能做到这一点,没有失败……1487接近我的代码的末尾)。

    Firefox通常报告正确的行,但它总是偏离1行。我以为IE9也会。。。

    如何进行故障排除。我已经验证了代码通过了jshint.com,这使得它期望 ; 如果这是真的,Jshint早就知道了。

    在IE9上几乎是盲目飞行。

    这是代码:上面有10行,下面有10行。第1487行是这样评论的。

        /**
         *Publik
         */
    
        var publik = {};
        publik.initMenu = function( )
        {
            top_element = document.getElementById( 'top_new' ); 
            bottom_element = document.getElementById( 'wrap_drop_down_new' );
            top_element.addEventListener( "mouseout", mouse_out, false ); 
            top_element.addEventListener( "mouseover", top_mouse_over, false ); // Line 1487
            bottom_element.addEventListener( "mouseout", mouse_out, false ); 
            bottom_element.addEventListener( "mouseover", bottom_mouse_over, false ); 
        };
        return publik;
    
    }());
    /*  Use this to create Event on completion of .js and remove cStart().
    
        var event_load_js = document.createEvent("HTMLEvents");
        event_load_js.initEvent( "blur", true, false );
    

    包含每个Beat请求的top_muse_over的代码

    /**
     *MMenu
     */
    
    var MMenu = ( function () 
    {
        /**
         *Private
         */
    
        var top_element,
            bottom_element,
            time_out_id = 0,
            TIME_DELAY = 1000;
    
        function showBottom()
        {
            top_element.style.border = '1px solid #cfcaca';
            top_element.style.borderBottom = '3px solid #cfcaca';
            bottom_element.style.visibility = 'visible';
        }
        function hideBottom()
        {
            top_element.style.border = '1px solid #faf7f7';
            bottom_element.style.visibility = 'hidden';
        }
        function top_mouse_over()
        {
            window.clearTimeout( time_out_id );
            showBottom();
        }
        function bottom_mouse_over()
        {
            window.clearTimeout( time_out_id );
        }
        function mouse_out()
        {
            time_out_id = window.setTimeout( hideBottom, TIME_DELAY );
        }
    
    3 回复  |  直到 12 年前
        1
  •  4
  •   Community CDub    7 年前

    从浏览器中复制动态生成的代码,并将其粘贴到Notepad++中,然后搜索“?”以查看是否有unicode字符。我确信控制台没有说实话。我以前也遇到过这种情况。

    请参见: https://stackoverflow.com/a/9246128/1220302

        2
  •  2
  •   mike nelson    11 年前

    可能与unicode无关。可能是属性onclick或其他内联脚本上缺少的引号。我刚刚碰到这个。示例:

    <button onclick="alert('hi') title="hello">Click me</button>
    

    此错误仅在解析js时发生,并在第1行中给出错误。我发现这只是在IE中抛出了一个脚本解析错误,而不是在Chrome中。错误为:

    SCRIPT1004: Expected ';' 
    mypage.html, line 1 character 54
    

    因为我使用jquery.html()将这个html注入DIV,所以它在页面加载时并没有解析它,而且只在某些条件下解析它——但事实上这是一个脚本解析错误。

        3
  •  1
  •   Srinivasan K K    7 年前

    最近我在IE 11上也遇到了同样的问题,所以我做了以下事情来解决这个问题。

    1. 按F12在IE浏览器中打开控制台窗口
    2. 请更改 IE版本至11 将存在一个具有不同IE版本的下拉列表,而不是仿真选项卡的文档模式或右侧顶部的旧版本(<IE11)。
    3. 当我们更改IE版本时,浏览器将自动重新加载