当前位置:  开发笔记 > 编程语言 > 正文

Prototype JS吞下了dom:loaded和ajax回调中的错误?

如何解决《PrototypeJS吞下了dom:loaded和ajax回调中的错误?》经验,为你挑选了1个好方法。

我无法弄清楚为什么原型会在dom:loaded事件和AJAX处理程序中抑制错误消息.

鉴于以下HTML:



    
        Conforming XHTML 1.1 Template
        
        
    
    
    

domready事件触发,我在控制台中看到日志,但没有任何错误的迹象.如果你将console.log(idontexist);线移出处理程序,你就得到了

idontexist没有定义

控制台中出错.我觉得有点怪异,在其他事件处理程序,如"点击",你会得到错误信息,似乎这仅仅是dom:loaded有这个问题.

AJAX处理程序也是如此:

new Ajax.Request('/', {
    method: 'get',
    onComplete: function(r) {
        console.log('xhr complete');
        alert(youwontseeme);
    }
});

你不会看到任何错误.这是使用prototype.js 1.6.1,我在文档中找不到这种行为的任何迹象,也没有在这些处理程序中启用错误报告的方法.

我尝试使用FireBug的调试器逐步执行代码,当它遇到dom:loaded处理程序中缺少的变量时,它似乎跳转到名为K的第53行上的函数:

K: function(x) { return x } 

但是怎么样?为什么?什么时候?我在那里看不到任何try/catch块,程序流如何在那里结束?

我知道我可以通过dom:ready在try/catch块中包装我的处理程序来使错误可见,但这不是一个非常舒服的选择.同样适用于为AJAX调用注册全局onException处理程序.

为什么它甚至可以抑制错误?有人遇到过这个吗?



1> kodisha..:

过了一会儿,我发现原型将所有异常重定向到onException处理程序:

  new Ajax.Request('/ajax_html_echo', {
    method: 'get',
    onComplete: function(r) {
        console.log('xhr complete');
        alert(undefinedVar)
    },
    onException: function(request,e){
        console.log(e.message); // prints undefinedVar is not defined
    }
});

更多信息在这里

http://www.prototypejs.org/api/ajax/options

onException 每当出现XHR错误时触发.有一个自定义签名:第一个参数是请求者(即一个Ajax.Request实例),第二个参数是异常对象.


虽然是,但这是一个部分解决方案,我提到我希望看到一个解决方案,而无需为AJAX调用注册一个全局onException处理程序,这也适用于每个请求处理程序.
推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有