2012-03-30 68 views
4

问题使用Javascript - 触发误差

是否有触发自定义JavaScript错误消息的方式吗?在Chrome中,我发现console.warn[error,log]用于向浏览器发送消息。但是,这只适用于Chrome(也可能是Firefox)。不过,这行本身在IE浏览器中触发错误。

我希望能够触发违反Javascript函数规则的错误。例如,将对象作为值的函数期望对象具有“对话框”的属性。如果该属性不存在,我想触发一个错误消息“Modal Window:No dialog id specified。”。

语境

我建立一个PHP类和Javascript类一起工作,使我们的应用程序的程序员可以轻松地创建对话框,将是统一的,可靠的。


示例代码

try { 
    if (!params || !params['dialog']) { 
     throw "NoDID"; 
    } 
} 
catch (error) { 
    if (error == "NoDID") { 
     //com.MySITE.js.warn("Modal Window: No dialog id specified."); 
     //Trigger custom error message here. 
    } 
} 

我想消息去,便于开发者调试JavaScript的窗口。只是做“扔”导致“未捕获的自定义错误消息”。我不希望用户在页面上看到任何内容。我希望它可以在js日志中供开发人员使用。

回答

3
if (console) console.warn(... 

(或者你可以使用console.error,执行console.log,console.trace等)。或者你也可以这样做:

console && console.warn(... 

或者,如果你不喜欢检查控制台到处你可以在你的代码的开始,做:

window.console = console || {warn: function(){}}; 

换句话说,如果浏览器没有控制台,用虚假的“警告”方法做一个虚假的,不做任何事情的方法。如果你这样做,你可以在整个代码中做console.warn,而不用担心浏览器是否有控制台。

另一种方法是使你自己的警告方法:

function warn(message) { 
    console && console.warn(message); 
} 

,然后你可能只是警告(“出事了”)。

当然,如果你想要真正了解IE用户何时获得用户,你需要改为制作自己的警告消息,这将需要向服务器上的某个地方发出AJAX请求(并且然后在某处发送邮件或其他东西)。

+0

对于IE而言,您可以使用Firebug light(Firebug作为Firefox JS开发扩展,Firebug light是纯粹用JS实现的贫民窟版本,而不是服务器端通知方法),以便您不需要Firefox)。 – machineghost 2012-03-30 17:11:40

+0

我正在开始一个像com.mySite.js这样的自定义应用程序名称的实现。不过,我认为你的解决方案符合法案。 – teynon 2012-03-30 17:19:14

8

使用throw

throw "Deliberate Error!"; 
+0

我希望消息转到javascript窗口以方便开发人员调试。只是做“扔”导致“未捕获的自定义错误消息”。我不希望用户在页面上看到任何内容。我希望它可以在js日志中供开发人员使用。 - 查看编辑问题中的代码。 – teynon 2012-03-30 17:04:37