代码之家  ›  专栏  ›  技术社区  ›  Tom Kidd

是否有任何好的或可靠的方法来确定仅使用Internet Explorer错误消息的javascript错误在哪里?

  •  8
  • Tom Kidd  · 技术社区  · 16 年前

    我正在编写一个应用程序,由于各种原因,它涉及到Internet Explorer(记录为IE7)、ActiveX控件和大量的javascript,这些javascript分布在多个.js包中。

    我们的一个远程测试人员遇到了一条错误消息,IE的错误消息说明了以下影响:

    Line: 719
    Char: 5
    Error: Unspecified Error
    Code: 0
    URL: (the URL of the machine)
    

    只有一个javascript文件超过719行,第719行是一个空行(在本例中)。

    项目中涉及的HTML或其他文件都没有719行或更多行,但结果HTML(类似于服务器端的include)至少如“视图源”中的IE所示有719行或更多行,但第719行(在本例中)是一个结束表行标记(换句话说,没有javascript)。

    在这种情况下,“视图生成源”的结果只有310行。

    我可以想象,整个页面,以及与其他HTML内联表示的javascript文件的内容,可能是错误所指的位置,但我不知道查看这是什么好方法,

    因此,假设Internet Explorer中有一个javascript错误 其中行号是唯一提示 但是页面实际上是跨多个文件分布的?

    更新: 由于用户体验到这种情况是远程的,并且由于各种网络原因,使用类似于Visual Studio 2008(顺便说一下,它有很棒的javascript调试)的工具对其进行调试是不可能的,因此问题更加严重。我只限于让我们中的一个人查看源代码,尝试找出它将在哪个代码行上展开。

    更新2: 真正的答案(如下接受)似乎是“不,不是真的”。不过,值得一提的是,罗伯特·J·沃克的一点关于它被一个人抛弃的看法确实让我指出了正确的方向,因为我认为这是一条冒犯的线。但由于这不是我所说的好的或可靠的(即错误,而不是罗伯特·J·沃克的错误),我会接受“不,不是真的”的回答。我不确定这样的礼节是否恰当。如果不是通过评论,请告诉我。

    10 回复  |  直到 11 年前
        1
  •  5
  •   noah    16 年前

    简而言之。不是真的。首先尝试在FF中查找错误,如果失败,您可以使用 Visual Web Developer . 调试大部分都很糟糕。

        2
  •  3
  •   EndangeredMassa    16 年前

    IE7中的WebDeveloper工具栏可以为您提供呈现的源代码视图。

    View > Source > Dom (Page)
    

    当您考虑IE为脚本错误提供的行号时,这可能更准确。

        3
  •  3
  •   Matt R    16 年前

    我发现调试javascript的最佳方法是在我认为代码已损坏的地方附近添加几个response.write()或alert消息。未显示的写入或警报最接近代码的问题区域。

    我这样做是因为我找不到更简单的方法。

    更新:如果使用这种调试方法,也可以使用变量内容的写入/警报。

        4
  •  3
  •   Robert J. Walker    16 年前

    提示:我发现许多IE错误消息行编号是 一个接一个!

        5
  •  2
  •   dlamblin    16 年前

    通过安装 firebug lite 在该页的服务器上:

    <script type='text/javascript' 
        src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'>
    </script>
    

    您可以使用登录到虚拟控制台,

    firebug.d.console.log("stuff and things")
    firebug.d.console.dir( {returnedObject:["404", "Object Not Found"]} )
    

    并要求您的远程测试人员通过按F12为您获取更多详细信息。

    我有点怀疑那里有一个未终止的字符串或一个不匹配的括号或括号。

        6
  •  2
  •   morganizeit    16 年前

    不,没有办法让内置的异常消息更糟糕。

    相反,您需要在IE中使用一个调试器。我找到的最好的教程如下:

    http://www.berniecode.com/blog/2007/03/08/how-to-debug-javascript-with-visual-web-developer-express/

    遵循这些说明,当发生错误或异常时,您将在正确的文件中显示准确的行。您还将看到当前作用域中变量的值,您可以设置“监视”项以帮助调试。

    除此之外,如果您需要日志记录和CSS级联检查(如Firebug),我在DebugBar和JSCompanion中获得了很好的结果:

    http://www.debugbar.com/ http://www.my-debugbar.com/wiki/CompanionJS/HomePage

        7
  •  1
  •   Zombies    16 年前

    试试萤火虫。我可以参加IE: http://getfirebug.com/lite.html

        8
  •  1
  •   steve_c    16 年前

    您检查过使用Firebug的Firefox中是否也存在此错误吗?这将是我试图找出这个错误发生在哪里的第一步。

    如果它不在Firefox中,那么我将继续在IE中启用脚本调试。

        9
  •  1
  •   matt b    16 年前

    我唯一的建议是:不要用IE进行这种调试。这是主流浏览器中最糟糕的:我尝试使用火狐(Firebug)或Chrome/Safari来处理大多数问题。

    如果必须使用IE,请安装 IE Developer Toolbar (对于javascript错误似乎没有多大帮助)和/或安装脚本调试程序

        10
  •  0
  •   sebagomez    16 年前