【发布时间】:2015-08-29 23:12:37
【问题描述】:
stackoverflow 如何知道 javascript 何时无法运行,并能够在页面顶部通知用户?
是否可以判断脚本是否没有加载或产生错误,然后仍然能够使用 javascript 生成错误消息?
【问题讨论】:
stackoverflow 如何知道 javascript 何时无法运行,并能够在页面顶部通知用户?
是否可以判断脚本是否没有加载或产生错误,然后仍然能够使用 javascript 生成错误消息?
【问题讨论】:
<noscript>
<div id="noscript-warning">Stack Overflow works best with JavaScript enabled<img src="http://pixel.quantserve.com/pixel/p-c1rF4kxgLUzNc.gif" alt="" class="dno"></div>
</noscript>
JS 加载问题只有在您可以加载 JS 时才会发生,这意味着 JS 已启用。确定 JS 是否已加载的最简单方法是挂钩加载成功/失败事件,或者查询您知道在加载的 JS 中实现的内容(加载过程完成后)。
【讨论】:
<noscript>使用<noscript> 标签:
<noscript>
<div>JavaScript isn't available.<div>
<div>Please Enable it to continue.<div>
</noscript>
堆栈溢出使用此代码:
<noscript>
<div id="noscript-warning">Stack Overflow works best with JavaScript enabled<img src="http://pixel.quantserve.com/pixel/p-c1rF4kxgLUzNc.gif" alt="" class="dno"></div>
</noscript>
try..catch
要处理错误,您可以将所有 JS 包装在一个函数中:
try {
runAllJavaScript();
} catch (e) {
alert("There was a fatal error :(");
}
eval可以使用:
var code = new XMLHttpRequest();
code.onload = function () {
try { eval(code.responseText); }
catch (e) {
alert("The JavaScript had an error");
}
};
code.onerror = function () {
alert("Script didn't load!");
};
code.open("GET", "path/to/script.js");
code.send();
大多数人会不喜欢这个解决方案,因为它可能被认为是“hacky”
【讨论】:
onerror,我已经添加了