代码之家  ›  专栏  ›  技术社区  ›  K. Norbert

原型JS在dom:loaded,以及ajax回调?

  •  7
  • K. Norbert  · 技术社区  · 16 年前

    dom:loaded 事件,以及在AJAX处理程序中。

    给定以下HTML片段:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <title>Conforming XHTML 1.1 Template</title>
            <script type="text/javascript" src="prototype.js"></script>
            <script type="text/javascript">
                document.observe('dom:loaded', function() {
                    console.log('domready');
                    console.log(idontexist);
                });
            </script>
        </head>
        <body>
        </body>
    </html>
    

    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就是这样,我在文档中找不到这种行为的任何迹象,也找不到在这些处理程序中启用错误报告的方法。

    dom:loaded 经办人:

    K: function(x) { return x } 
    

    我知道我可以通过包装我的 dom:ready try/catch块中的处理程序,但这不是一个非常合适的选项。为AJAX调用注册全局onException处理程序也是如此。

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

    3 回复  |  直到 14 年前
        1
  •  6
  •   kodisha    16 年前

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

      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

    一个例外 出现错误。具有自定义签名: 第一个参数是请求者 (即一个Ajax.Request实例) 第二个是异常对象。

        2
  •  2
  •   iTake    14 年前

    您还可以从onException重新抛出异常,您将以与在调用外部发生的异常相同的方式获得它

    onException: function(request,e){throw e;}
    
        3
  •  0
  •   0m3r    13 年前

    Ajax.响应者

    一个全局侦听器存储库,通知基于原型的Ajax请求的每个步骤。

    http://api.prototypejs.org/ajax/Ajax/Responders/

    Ajax.Responders.register({
      onCreate: function() {
        Ajax.activeRequestCount++;
      },
      onComplete: function() {
        Ajax.activeRequestCount--;
      }
    });
    
    推荐文章