问题
有没有办法触发自定义Javascript错误消息?在Chrome中,我发现console.warn[error,log]
用于向浏览器发送消息。但是,这仅适用于Chrome(可能还有Firefox)。但是,此行本身会在Internet Explorer中触发错误。
我希望能够触发违反Javascript功能规则的错误。例如,将对象作为值的函数要求对象具有“dialog”属性。如果该属性不存在,我想触发错误消息“模态窗口:没有指定对话框ID。”
上下文
我正在构建一个可以协同工作的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日志中供开发人员使用。
答案 0 :(得分:10)
使用throw
:
throw "Deliberate Error!";
答案 1 :(得分:4)
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请求(以及某个地方)然后会发送电子邮件或其他东西)。