jQuery BlockUI插件 - 当前01-2011版本的IE鼠标等待光标修复?

在IE中,BlockUI unblockUI不会将等待光标更改回默认值。虽然光标图像在解锁后移动像素,但光标会变回默认值(就好像光标图形已更改但光标在移动像素之前不会刷新): 这个2009线程有一个修复,但我不够聪明,弄清楚如何修改/应用到最新的01-2011版本的BlockUI。是否知道如何修改插件的最新版本或另一个好的解决这个IE问题?我还没找到工作 修复(在01-2011版本上不起作用 - 在此区域中修改的代码)
Add 
els[1].style.cursor = 'default'; 
After 
var els = full ? $('body').children().filter('.blockUI') : $ 
('.blockUI', el);
谢谢!     
已邀请:
我滚动浏览了你提供的链接(2009线程)并在该线程中尝试了这个建议的修复,我认为它可能有用: 添加此行:    
els[1].style.cursor = 'default';
在第389行之后:    
els = $('body').children().filter('.blockUI').add('body > .blockUI');
它似乎对我有用!如果这也解决了你的问题,请告诉我! 编辑:这是2.36版;实际上,你可能想要添加    
els[1].style.cursor = 'default';
在'if-else'块之后的第392行之后:    
var els;
   
if (full) // crazy selector to handle odd field errors in ie6/7
      
els = $('body').children().filter('.blockUI').add('body > .blockUI');
   
else
      
els = $('.blockUI', el);
编辑#2:在版本2.37中,您将: 添加此行:    
els[1].style.cursor = 'default';
在'if-else'块之后的第391行之后:    
var els;
   
if (full) // crazy selector to handle odd field errors in ie6/7
      
els = $('body').children().filter('.blockUI').add('body > .blockUI');
   
else
      
els = $('.blockUI', el);
    
更简单地说,你可以在blockUI中添加一个参数:
 $.blockUI({message:'Waiting...',css:{cursor:'default'}});
但是,你也应该把
 $('body').css('cursor', 'auto');
在您调用$ .unblockUI()的页面中。     
我用过这样的方法:
$.blockUI({ message: null, overlayCSS: { cursor: "default" } });
    
我扩展了功能重置:
// move blocking element back into the DOM where it started
function reset(els, data, opts, el) {
    els.each(function (i, o) {
        // remove via DOM calls so we don't lose event handlers
        $(o).css('cursor', 'default');
        if (this.parentNode)
            this.parentNode.removeChild(this);
    });
    ...
这条线
$(o).css('cursor', 'default'); 
在删除图层之前重置光标。     
我在javascript文件的2.3.7版本中修改了remove()函数,如下所示:
// remove the block
function remove(el, opts) {
    var full = (el == window);
    var $el = $(el);
    var data = $el.data('blockUI.history');
    var to = $el.data('blockUI.timeout');
    if (to) {
        clearTimeout(to);
        $el.removeData('blockUI.timeout');
    }
    opts = $.extend({}, $.blockUI.defaults, opts || {});
    bind(0, el, opts); // unbind events

    var els;
    if (full) // crazy selector to handle odd field errors in ie6/7
        els = $('body').children().filter('.blockUI').add('body > .blockUI');
    else
        els = $('.blockUI', el);

    if (full)
        pageBlock = pageBlockEls = null;

    if (opts.fadeOut) {
        els.fadeOut(opts.fadeOut);
        setTimeout(function() { reset(els,data,opts,el); }, opts.fadeOut);
    }
    else
        reset(els, data, opts, el);

   // restore the default cursor
   els.each(function(i,o) {
        $(o).css('cursor', 'default');
   });
};
这是我添加到函数末尾的代码:
// restore the default cursor
els.each(function(i,o) {
     $(o).css('cursor', 'default');
});
    
我通过覆盖$ .blockUI.defaults的全局onUnblock解决了这个问题。 这样我就不必对blockUI源的实际来源进行任何更改。
function restoreCursorOnUnblock(element, options)  {
     var els;
    if (full) { // crazy selector to handle odd field errors in ie6/7
        els = $('body').children().filter('.blockUI').add('body > .blockUI');
    } else {
        els = $('.blockUI', el);
    }
     // restore the default cursor
    els.each(function(i,o) {
         $(o).css('cursor', 'default');
    });
}

function addBlockUiToAjaxStart() {
    $.blockUI.defaults.onUnblock = restoreCursorOnUnblock;
    $('body').ajaxStart(function(event,request, settings){
         $.blockUI({message:''});
     });
}
    
这不是一个真正的答案,但我只是将脚本中的光标“等待”样式注释为现在的解决方法。     
建议:如果等待光标对你不重要,那么转到jquery.blockUI.js文件并进入 $ .blockUI.defaults部分,将所有光标值从'wait'更改为'default' 祝好运     

要回复问题请先登录注册