我想将错误传递给警告以警告用户,在他们的代码中犯了错误,即使他们没有打开控制台。
var doc=(frame.contentWindow.document || obj.contentDocument|| obj.contentWindow);
var head = doc.getElementsByTagName('head')[0];
var scriptElement = doc.createElement('script');
scriptElement.setAttribute('type', 'text/javascript');
scriptElement.text = scripts;
try{
head.appendChild(scriptElement);
}
catch(e){ alert("error:"+e.message +" linenumber:"+e.lineNumber);}
当脚本出现错误时,appendChild会抛出一个错误,并且直接显示在控制台中。但我希望它能够在警告框中显示,因为这是给孩子们用的,他们可能不会检查控制台。try catch块无法捕获该错误。 我尝试使用eval(scripts)来解决。
try{
eval(scripts);} catch(e){ alert("error:"+e.message +" linenumber:"+e.lineNumber);}
这确实可以工作,但意味着代码会执行两次,在某些情况下非常不方便。
我尝试过对console.error进行猴子补丁:
console.log=function(){alert("taking over the log");}
console.error=function(){alert("taking over the log");}
但仅当我使用 console.error 时才有效,而不是在实际错误抛出时。如果不是 console.error,那么在发生真正的错误时,哪个函数会将错误发送到控制台?我能够访问并更改它吗?有什么想法吗?任何帮助都将不胜感激。谢谢Jenita