xd4*_*d44 15 javascript jquery
我们的产品在客户的网站上插入一个脚本,有点像在线聊天框.
通常,客户的网站都有错误的javascript,也会停止我们的代码(浏览器会在遇到错误时停止执行).有没有办法让我们的代码仍然执行,即使控制台中有关于未定义的方法或变量之类的错误?
谢谢你的帮助.
Chr*_*son 17
简短的回答是,你真的不能.
"解决方案"#1:您可以坚持要求您的第三方代码在其他任何人之前运行.在大多数情况下,这是不可能的,甚至是不可取的.
"解决方案"#2:您可以坚持第一方工程师将所有第三方代码包装成try/catch块.但是,这个解决方案实际上并不能为您提供任何保证,因为非常频繁的第三方库<script>会在页面上附加额外的标签 - 这些不属于try/catch包含创建此/这些标签的代码的范围的"管辖区"..
"解决方案"#3:您可以完全在一个范围内构建您的应用程序<iframe>,从而完全避免这个问题.不幸的是,即使你非常聪明,你也会很快遇到跨域违规,第三方cookie限制等.这很可能不会对你有用.
"解决方案"#4:您可以向您的客户解释该问题,让他们要求其他第三方代码干净利落地运行.我说这是一个"解决方案",因为坦率地说,如果您的问题是如何避免这样做,那么它不是您问题的"解决方案" .
不幸的是,选项#4是你最好的选择.如果您以同样的方式观察其他第三方图书馆"破解"可能会有所帮助:您可以告诉您的客户"嘿,这不仅仅是我 - X,Y和Z都因为<其他第3名党的图书馆>." 它可能会导致他们将热量放在违规代码上,这使得网络对所有参与者来说都更加幸福.
Jas*_*nga 15
正如其他人所说,在错误发生后继续可能不是最好的事情,但你可以试试这个:
function ignoreerror()
{
return true
}
window.onerror=ignoreerror();
Run Code Online (Sandbox Code Playgroud)
更多细节在这里
每当发生JavaScript错误时都会触发onerror事件(根据您的浏览器配置,您可能会看到弹出的错误对话框).这个错误事件被附加到窗口对象上,这是一个相当不寻常的避难场所,但有充分的理由.它以这种方式附加,因此它可以监视页面上的所有JavaScript错误,甚至是页面部分中的错误.
Opera有一个包含更多细节的页面
Browsers supporting window.onerror
Chrome 13+
Firefox 6.0+
Internet Explorer 5.5+
Opera 11.60+
Safari 5.1+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17668 次 |
| 最近记录: |