在IE中,BlockUI unblockUI不会将等待光标更改回默认值。虽然光标图像在解锁后移动像素,但光标会变回默认值(就像光标图形已更改但光标在移动像素之前不会刷新一样):
这个2009 thread had a fix,但我不够聪明,无法弄清楚如何修改/应用到最新的01-2011版本的BlockUI。是否知道如何修改插件的最新版本或另一个好的解决这个IE问题?我还没找到工作
修复(在01-2011版本上不起作用 - 在此区域修改的代码)
Add
els[1].style.cursor = 'default';
After
var els = full ? $('body').children().filter('.blockUI') : $
('.blockUI', el);
谢谢!
答案 0 :(得分:4)
我滚动浏览了您提供的链接(2009 thread)并在该线程中尝试了this建议修复,我认为它可能会有效:
添加此行:
els[1].style.cursor = 'default';
在行号389之后:
els = $('body').children().filter('.blockUI').add('body > .blockUI');
这似乎对我有用!如果这也解决了你的问题,请告诉我!
修改:这适用于版本2.36;实际上,你可能想要添加
els[1].style.cursor = 'default';
在
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';
在此
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);
答案 1 :(得分:3)
更简单地说,你可以在blockUI中添加一个参数:
$.blockUI({message:'Waiting...',css:{cursor:'default'}});
但是,你也应该把
$('body').css('cursor', 'auto');
在您调用$ .unblockUI()。
的页面中答案 2 :(得分:2)
我使用了这样的方法:
$.blockUI({ message: null, overlayCSS: { cursor: "default" } });
答案 3 :(得分:1)
我扩展了功能重置:
// 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');
在删除图层之前重置光标。
答案 4 :(得分:1)
我修改了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');
});
答案 5 :(得分:1)
我通过覆盖$ .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:''});
});
}
答案 6 :(得分:0)
这不是一个真正的答案,但我刚刚将脚本中的光标“等待”样式注释为现在的解决方法。
答案 7 :(得分:0)
建议:如果等待光标对你不重要,那么转到jquery.blockUI.js文件并进入 $ .blockUI.defaults部分,将所有光标值从'wait'更改为'default'
祝你好运