我正在处理一个函数,以便在页面上出现js错误的任何时候进行跟踪。我有4/6错误类型工作,但似乎无法找出语法错误的函数,或者他们只是停止脚本执行到它不起作用的点? 另外,我不确定如何测试内部错误? 编辑:InternalError仅在firefox,中,但需要对EvalError进行测试,我将单独发布。另一个编辑:看起来EvalError是遗留的,现代浏览器并不完全支持。
不能使用诸如jQuery之类的库,只能使用本机js。
以下是添加了答案的代码:
errorTracking = function errorCaught( ev ) {
document.getElementById('error').innerHTML = '';
var errFile = '';
var errLine = '';
if(ev.filename) { errFile = ev.filename; }
if(ev.lineno) { errLine = ev.lineno; }
var errStr = 'ERROR: ' + ev.error + ', LOCATION: ' + errFile + ', LINE NUMBER:' + errLine;
document.getElementById('error').innerHTML = '<strong>Message:</strong> ' + ev.error + '<br /><strong>Location:</strong> ' + errFile + '<br /><strong>Line Number:</strong> ' + errLine;
// Omniture Error Tracking.
//_satellite.setVar('jsError', errStr);
ev.preventDefault();
};
if(window.addEventListener) {
window.addEventListener( "error", errorTracking, false );
document.getElementById('errRef').addEventListener('click', function() {
var refErr = asdf.asdf.length;
});
document.getElementById('errTyp').addEventListener('click', function() {
var typeErrVar = null;
var typeErr = typeErrVar();
});
document.getElementById('errRan').addEventListener('click', function() {
Array.apply(null, new Array(1000000)).map(Math.random);
});
document.getElementById('errURI').addEventListener('click', function() {
decodeURIComponent("%");
});
document.getElementById('errSyn').addEventListener('click', function() {
var script = document.createElement('script');
script.text = document.getElementById('error');
document.getElementsByTagName('head')[0].appendChild(script);
});
document.getElementById('errEva').addEventListener('click', function() {
});
}
答案 0 :(得分:0)
<script/>
将被完全解析,当脚本包含语法错误时,整个脚本将被丢弃。在处理错误的脚本之外创建语法错误,它将起作用。