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

jQuery BlockUI插件-当前01-2011版本的IE鼠标等待光标修复?,jquery,blockui,Jquery,Blockui,在IE中,BlockUI unbui不会将等待光标更改回默认值。取消阻止后,光标移动像素时会立即变回默认值(好像光标图形已更改,但光标在移动像素前不会刷新): 这是一个很好的例子,但我还没有足够的智慧去弄清楚如何将它修改/应用到BlockUI的最新01-2011版本。你知道如何修改插件的最新版本吗?或者知道如何解决这个IE问题吗?我还没有找到工作机会 修复(不适用于01-2011版本-此区域的代码已修改) 谢谢大家! 这并不是一个真正的答案,但我只是暂时将脚本中的光标“wait”样式注释掉作为一

在IE中,BlockUI unbui不会将等待光标更改回默认值。取消阻止后,光标移动像素时会立即变回默认值(好像光标图形已更改,但光标在移动像素前不会刷新):

这是一个很好的例子,但我还没有足够的智慧去弄清楚如何将它修改/应用到BlockUI的最新01-2011版本。你知道如何修改插件的最新版本吗?或者知道如何解决这个IE问题吗?我还没有找到工作机会

修复(不适用于01-2011版本-此区域的代码已修改)


谢谢大家!

这并不是一个真正的答案,但我只是暂时将脚本中的光标“wait”样式注释掉作为一种解决方法。

我浏览了您提供的链接(),并在我认为可行的线程中尝试了建议的修复方法:

添加此行:
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
if(full)//ie6/7中处理奇数字段错误的疯狂选择器
els=$('body').children().filter('.blockUI').add('body>.blockUI')
else

els=$('.blockUI',el)

编辑#2:在2.37版中,您将:

添加此行:
els[1].style.cursor='default'
行号后391此“如果其他”块后:
var
if(full)//ie6/7中处理奇数字段错误的疯狂选择器
els=$('body').children().filter('.blockUI').add('body>.blockUI')
else


els=$('.blockUI',el)

我扩展了重置功能:

// 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'); 

在删除图层之前重置光标。

建议:如果等待光标对您不重要,请转到jquery.blockUI.js文件并在 $.blockUI.defaults部分,将所有光标值从“等待”更改为“默认”

祝你好运

我在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:''});
     });
}

更简单地说,您可以在blockUI中添加一个参数:

 $.blockUI({message:'Waiting...',css:{cursor:'default'}});
但是,你也应该把

 $('body').css('cursor', 'auto');

在调用$.unbui()的页面中,我使用了这样的方法:

$.blockUI({ message: null, overlayCSS: { cursor: "default" } });

这对我不起作用,我必须在remove()函数中恢复光标,因为在我的应用程序中跳过了调用reset()的else块。我已经发布了我的blockUI 2.3.7版的工作答案,对我来说很有用-谢谢!我正在使用该插件的v2.39版本,必须在第401行插入新代码。
$.blockUI({ message: null, overlayCSS: { cursor: "default" } });