Yas-3 wrote:
> 
> 
> Johnie: Thanks for your suggestion-- when coupled with Rob's
> suggestion to comment out the if statement, it fixes the issue.
> 
> If the next version of blockUI contains a fix for this issue, great;
> but if not, these fixes are sufficient.
> 
> I really appreciate all the suggestions, everyone-- thank you again.
> 
> 

hey guys thanx for valuable information.
But i have found that if height of my page is more than even 200% doesn't
work

Its better if height of  blocking layer is set dynamically for IE
herz what i have done in install function.Override this function to solve
the issue

function install(el, opts) {
    var full = (el == window);
    /* This will give us height of the actual window  */
    var IEheight        =       el.document.body.clientHeight;
    var msg = opts && opts.message !== undefined ? opts.message : undefined;
    opts = $.extend({}, $.blockUI.defaults, opts || {});
    opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS,
opts.overlayCSS || {});
    var css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
    msg = msg === undefined ? opts.message : msg;

    // remove the current block (if there is one)
    if (full && pageBlock) 
        remove(window, {fadeOut:0}); 
    
    // if an existing element is being used as the blocking content then we
capture
    // its current place in the DOM (and current display style) so we can
restore
    // it when we unblock
    if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) {
        var node = msg.jquery ? msg[0] : msg;
        var data = {};
        $(el).data('blockUI.history', data);
        data.el = node;
        data.parent = node.parentNode;
        data.display = node.style.display;
        data.position = node.style.position;
        data.parent.removeChild(node);
    }
    
    var z = opts.baseZ;
    
    // blockUI uses 3 layers for blocking, for simplicity they are all used
on every platform;
    // layer1 is the iframe layer which is used to supress bleed through of
underlying content
    // layer2 is the overlay layer which has opacity and a wait cursor
    // layer3 is the message content that is displayed while blocking
    
    var lyr1 = ($.browser.msie) ? $('<iframe class="blockUI"
style="z-index:'+ z++
+';border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0"
src="javascript:false;"></iframe>')
                                : $('<div class="blockUI"
style="display:none"></div>');
    var lyr2 = $('<div class="blockUI blockOverlay" style="z-index:'+ z++
+';cursor:wait;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
    var lyr3 = full ? $('<div class="blockUI blockMsg blockPage"
style="z-index:'+z+';position:fixed"></div>')
                    : $('<div class="blockUI blockMsg blockElement"
style="z-index:'+z+';display:none;position:absolute"></div>');
    /*  modification ends here  */
 
    // if we have a message, style it
    if (msg) 
        lyr3.css(css);

    // style the overlay
    if (!opts.applyPlatformOpacityRules || !($.browser.mozilla &&
/Linux/.test(navigator.platform))) 
        lyr2.css(opts.overlayCSS);
    lyr2.css('position', full ? 'fixed' : 'absolute');
    
    // make iframe layer transparent in IE
    if ($.browser.msie) 
        lyr1.css('opacity','0.2');

    $([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
    
    /* Setting the height of layer1 exactly the same as it was of the
blocked page  */
    if ($.browser.msie) 
        lyr1.css('height',IEheight);
    
    // ie7 must use absolute positioning in quirks mode and to account for
activex issues (when scrolling)
    var expr = $.browser.msie && (!$.boxModel || $('object,embed', full ?
null : el).length > 0);
    if (ie6 || expr) {
        // give body 100% height
        if (full && opts.allowBodyStretch && $.boxModel)
            $('html,body').css('height','100%');

        // fix ie6 issue when blocked element has a border width
        if ((ie6 || !$.boxModel) && !full) {
            var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
            var fixT = t ? '(0 - '+t+')' : 0;
            var fixL = l ? '(0 - '+l+')' : 0;
        }

        // simulate fixed position
        $.each([lyr1,lyr2,lyr3], function(i,o) {
            var s = o[0].style;
            s.position = 'absolute';
            /*  This if is modified for IE else in IE when user scrolls down
the scrolled page becomes enabled       */
            if($.browser.msie){
                   if (opts.centerY) {
                        if (full)
s.setExpression('top','(document.documentElement.clientHeight ||
document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah =
document.documentElement.scrollTop ? document.documentElement.scrollTop :
document.body.scrollTop) + "px"');
                        s.marginTop = 0;
                    }
            }
            /*  modification ends here  */
 
            else{
                    if (i < 2) {
                        full ?
s.setExpression('height','Math.max(document.body.scrollHeight,
document.body.offsetHeight) -
(jQuery.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"')
                             :
s.setExpression('height','this.parentNode.offsetHeight + "px"');
                        full ? s.setExpression('width','jQuery.boxModel &&
document.documentElement.clientWidth || document.body.clientWidth + "px"')
                             : 
s.setExpression('width','this.parentNode.offsetWidth
+ "px"');
                        if (fixL) s.setExpression('left', fixL);
                        if (fixT) s.setExpression('top', fixT);
                    }
                    else if (opts.centerY) {
                        if (full)
s.setExpression('top','(document.documentElement.clientHeight ||
document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah =
document.documentElement.scrollTop ? document.documentElement.scrollTop :
document.body.scrollTop) + "px"');
                        s.marginTop = 0;
                        }
               }
        });
    }
    
    // show the message
    lyr3.append(msg).show();
    if (msg && (msg.jquery || msg.nodeType))
        $(msg).show();

    // bind key and mouse events
    bind(1, el, opts);
        
    if (full) {
        pageBlock = lyr3[0];
        pageBlockEls = $(':input:enabled:visible',pageBlock);
        if (opts.focusInput)
            setTimeout(focus, 20);
    }
    else
        center(lyr3[0], opts.centerX, opts.centerY);
};

-- 
View this message in context: 
http://www.nabble.com/IE6-and-blockUI-Issue-tp17539499s27240p21124377.html
Sent from the jQuery General Discussion mailing list archive at Nabble.com.

Reply via email to