我在IE 6中遇到以下错误:
Line: 454
Char: 13
Error: Invalid Argument
Code: 0
URL: xxxxx/Iframe1.aspx
我无法为我的生活找到导致这种情况的原因。
这只发生在我有一个主页面有几个IFrame的情况下,它只发生在我有一个特定的IFrame(错误消息中的URL指向的那个),并且IFrame在装货时间 我把它缩小到那里,但我仍然找不到更具体的......
有问题的IFrame在其HTML中没有454行,也没有引用任何JS文件。
我尝试将VS附加到iexplore.exe作为调试器,并在发生错误时中断,但随后告诉我“当前位置没有可用的源代码”...
关于我如何追逐这个的任何建议?
更新:我通过蛮力发现了这个问题,基本上,将所有内容评论出来并随意取消注释...
但问题仍然存在:当IE报告错误的行号/文件时,找出错误位置的合理方法是什么?
答案 0 :(得分:11)
IE的Javascript引擎在调试方面很恶心。您可以尝试在“高级选项”中启用脚本调试,然后如果安装了Visual Studio,它将跳转到错误位置...如果您很幸运。其他时候你没有得到任何东西,特别是如果代码是eval()'ed。
关于这些行号的另一个问题是它没有反映出错误发生在哪个文件中。我曾经遇到过行号实际上是正确的情况,但它是在链接的.js文件中,而不是主文件文件。
答案 1 :(得分:6)
尝试使用Microsoft Script Debugger或DebugBar(http://www.debugbar.com),这可能会为您提供更好的IE6调试工具。他们总是帮助我使用IE6。
此外,这是在IE的任何较新版本中发生还是仅在IE6中发生?
答案 2 :(得分:5)
如果没有实例,几乎不可能调试它,但是在Internet Explorer中经常导致“无效参数”错误的一件事是尝试为样式属性设置不正确的值。
类似于:
document.getElementById("foo").style.borderWidth = bar + "px";
当“bar”的值为null或未定义,或者是字符串“grandma”时,将导致它,因为“grandmapx”不是borderWidth样式属性的有效值。
答案 3 :(得分:2)
IE9具有浏览器模式。
打开开发人员工具,然后在控制台中选择要模拟的版本,重新加载包含错误的页面,控制台将显示行号和错误所在的正确文件。
答案 4 :(得分:1)
我也经常遇到这个问题,我也一直在评论所有内容,直到找到问题为止。我觉得有用的一件事是为每个javascript方法添加一个try / catch块。有时我会添加一个警报来告诉错误来自哪种方法。仍然乏味,但比试错评论更容易。如果你每次编写一个新方法时都添加它们,它会在发生错误的事件中节省大量时间。
function TestMethod()
{
try
{
//whatever
}
catch (ex)
{
ShowError(ex.description);
//alert("TestMethod");
}
}
答案 5 :(得分:1)
给其他读者的说明:我最近有这个“无效的论点”。在IE7-9中报告错误并最终发现它与我使用setTimeout / setInterval的方式有关。
这是错误的,在IE中:
var Thing = {};
Thing.myFunc = function() { ... };
setTimeout(Thing.myFunc, 1000);
相反,将回调包装在一个匿名函数中,如下所示:
var Thing = {};
Thing.myFunc = function() { ... };
setTimeout(function() { Thing.myFunc(); }, 1000);
并且不再出现“无效参数”错误。
答案 6 :(得分:0)
另一种可能性:
我在两台计算机之间做了大量的开发工作,无论是在家还是在工作,所以我经常给自己发电子邮件或从服务器上下载页面进行处理。最近我意识到Vista有一种习惯,即在以某种方式下载某些文件时单方面应用块,而不会通知我它正在执行此操作。
结果是,例如,HTML页面想要在其标头中访问.js文件,但它没有访问本地文件的权限。在这种情况下,无论你在.js文件中写什么,浏览器都不会读它,并且会产生令人讨厌的Line: 0
错误。
因此,在梳理代码以查找错误之前,请检查HTML页面的属性,看看它是否已被操作系统阻止....
答案 7 :(得分:0)
就像NickFitz所指出的那样,造型是我的代码的一个问题。
document.getElementById('sums<%= event.id %>').style.border='1px solid #3b3b3b;'
我删除了边框样式,我的IE问题已经消失。