动态添加脚本时捕获js错误

时间:2013-12-30 10:53:47

标签: javascript error-handling

为什么我在动态添加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警报。

3 个答案:

答案 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>