你的位置:首页 > Java教程

[Java教程]如何让JQuery报错


0.解决的问题

a.当选择器语法没有问题,找不到元素时,让jquery报错

b.选择器语法有问题,程序无法继续执行时,让jquery报错

主要针对传递字符串,尝试前请备份jquery库,最好改变名字加已区分.

1.环境配置

jquery-3.0.0.js未压缩版

2.选择器语法没有问题,找不到元素

修改jquery源码增加代码,以下是修改后的代码,加红的是增加部分

var  version = "3.0.0",  // Define a local copy of jQuery  jQuery = function( selector, context ) {        // The jQuery object is actually just the init constructor 'enhanced'    // Need init if jQuery is called (just allow error to be thrown if not included)     if(typeof window["[]"] == "undefined")    {      window["[]"] = [];      window["[]"]["selector"] = selector;      window["[]"]["current"] = 0;          }    else    {      window["[]"]["current"] ++;    }    var c = new jQuery.fn.init( selector, context )     if(window["[]"]["current"]-- == 0)    {            if(c.length == 0)      {                window.console.error(window["[]"]["selector"] +"找不到");      }      delete window["[]"];    }    return c;  },

3.选择器语法有问题,导致程序无法继续执行

代码举例

$(function()

  var lol = $("li:");
  alert(lol.length);
});


在上个问题增加的代码的基础上,向jquery源码增加代码,以下是修改后的代码,红色是增加部分

 
process = special ?                  mightThrow :                  function() {                    try {                      mightThrow();                    } catch ( e ) {                                            if ( jQuery.Deferred.exceptionHook ) {                        jQuery.Deferred.exceptionHook( e,                          process.stackTrace );                      }                      // Support: Promises/A+ section 2.3.3.3.4.1                      // https://promisesaplus.com/#point-61                      // Ignore post-resolution exceptions                      if ( depth + 1 >= maxDepth ) {                        // Only substitute handlers pass on context                        // and multiple values (non-spec behavior)                        if ( handler !== Thrower ) {                          that = undefined;                          args = [ e ];                        }                        deferred.rejectWith( that, args );                      }                      if(typeof window["[]"]!="undefined")                      {                                                if(window["[]"]["current"] == 0)                        {                          window.console.error(window["[]"]["selector"]+"使程序无法向下执行");                          }                      }                    }                                      };

至于程序无法向下执行的原因,我也无法给出肯定的回答,JavaScript的函数调用总是会返回内容,我使用debug工具查找时,走到这个函数的末尾就不走了,怎么说呢,有缘再会吧!
因为异常的原因与上层函数失去了联系...