为什么我在动态添加javascript代码时无法处理js错误?
以下是代码:
try {
var element = document.createElement("script");
element.language = "javascript";
element.type = "text/javascript";
element.defer = true;
element.text = "this is not a javascript code";
var head = document.getElementsByTagName('head')[0];
head.appendChild(element);
} catch(err) {
alert("error caught");
}
即使脚本不正确,也不会显示error caught
警报。
答案 0 :(得分:6)
据我所知,在某些脚本标记上无法处理错误(甚至是语法错误)。
您可以使用window.onerror并在错误消息的开头查找SyntaxError
。我想,这是一种错误,你试图抓住它。
答案 1 :(得分:2)
用于捕获动态添加的脚本中的src加载错误
var element = document.createElement("script");
element.type = "text/javascript";
element.defer = true;
element.src = "Your link";
element.onerror = (error) => {
alert("Error") ;//you wil get to know error here
}
var head = document.getElementsByTagName('head')[0];
head.appendChild(element);
答案 2 :(得分:1)
catch语句应该在不同级别的代码中尝试捕获你添加的代码里面的错误,错误应该是异常而不是语法错误
<html>
<head>
<script type="text/javascript">
try {
var element = document.createElement("script");
element.language = "javascript";
element.type = "text/javascript";
element.defer = true;
element.text = "try{callingAnonymousMethod();} catch(ex) {alert('error caught');}";
var head = document.getElementsByTagName('head')[0];
head.appendChild(element);
} catch(err) {
alert("error caught");
}
</script></head>
<body>
</body>
<html>