现在的位置: 首页 > 综合 > 正文

jquery.validate.js在IE6 引用时出现 [错误消息:缺少 ';']

2013年11月18日 ⁄ 综合 ⁄ 共 1090字 ⁄ 字号 评论关闭

直接说问题吧:

      刚上线的网站一拍天下 IE6下面,引用jquery.validate.js出现:

我把页面的其他代码都干掉,只保存了jquery.validate.js的引用,还是出现此问题。基本断定jquery.validate.js在IE6下有兼容性问题,且我去官方下载了1.8.1版本,还是有此问题,只有老老实实找出问题所在了。

问题所在

  最后,我注释掉了一段代码,发现不出错误了:

  

/*
// ajax mode: abort
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
; (function ($) {
    var ajax = $.ajax;
    var pendingRequests = {};
    $.ajax = function (settings) {
        // create settings for compatibility with ajaxSetup
        settings = $.extend(settings, $.extend({}, $.ajaxSettings, settings));
        var port = settings.port;
        if (settings.mode == "abort") {
            if (pendingRequests[port]) {
                pendingRequests[port].abort();
            }
            return (pendingRequests[port] = ajax.apply(this, arguments));
        }
        return ajax.apply(this, arguments);
    };
})(jQuery);

*/

猛一看,也没什么问题。没别的招,一句代码一句的注释掉,发现问题竟在:

return ajax.apply(this, arguments);

这就让我更疑惑了,很正常的语法啊。加了一个debuger ,在IE9 下调试跟踪了一下,发现arguments里面的上下文调用的函数,是自己写的业务方法,里面有中文编码。

大概闻着味了,这好像是IE6里面常见的一个问题。

  再看此方法是对jQuery.ajax的mode 为 abort的重写,www.yipaitx.net 暂时也没有用到此属性,先干掉此代码段吧。暂时解决此问题,具体原因需要了解,jQuery, jquery.validate.js 中编码相关的处理,就能解决了。暂且留下,待研究.....

 

抱歉!评论已关闭.