views:

463

answers:

4

How to enable the maximize and restore button of the popup window using Javascript?

A: 

You can't, sorry - at least, not universally. The popup is implementation-dependent and there aren't any standard JavaScript methods for controlling it in the manner you describe.

Sam
+1  A: 

I'm assuming you're talking about the alert popup? This can't be done with standard JavaScript.

You best solution would be to try using some of the many popup solutions that have been developed for the various JavaScript frameworks (e.g. jQuery), and seeing if you can tailor this to your particular use.

James Wiseman
+1  A: 

Using the code I pasted on the bottom, you can emulate these buttons by creating them in your website interface.

To maximise: save the current position with Namespace.outerPositionGet() and size with Namespace.outerSizeGet(), then do Namespace.outerPositionSet({left:0,top:0}) and Namespace.outerSizeSet({width:window.screen.availWidth, height:window.screen.availHeight}).

To restore: just set position and size which were saved when maximising.

var Namespace = (function() {
    var N, W, framePosition, frameChrome, setFramePosition, setFrameChrome;
    N = {};
    W = window;
    setFramePosition = function() {
        var tmp0;
        if (typeof framePosition !== 'undefined') {
            return;
        }
        tmp0 = {
            top : W.screenTop,
            left : W.screenLeft
        };
        W.moveTo(tmp0.left, tmp0.top);
        framePosition = {
            top : tmp0.top - W.screenTop,
            left : tmp0.left - W.screenLeft
        };
        W.moveTo(tmp0.left + framePosition.left, tmp0.top + framePosition.top);
    };
    setFrameChrome = function() {
        var tmp0, tmp1;
        if (typeof frameChrome !== 'undefined') {
            return;
        }
        tmp0 = N.innerSizeGet();
        W.resizeTo(tmp0.width, tmp0.height);
        tmp1 = N.innerSizeGet();
        frameChrome = {
            width : tmp0.width - tmp1.width,
            height : tmp0.height - tmp1.height
        };
        W.resizeTo(tmp0.width + tmp1.width, tmp0.height + tmp1.height);
    };
    N.outerPositionSet = function(position) {
        W.moveTo(position.left, position.top);
    };
    N.outerPositionGet = function() {
        if (typeof W.screenTop !== 'undefined') {
            setFramePosition();
            N.outerPositionGet = function() {
                return {
                    top : W.screenTop + framePosition.top,
                    left : W.screenLeft + framePosition.left
                };
            };
        } else if (typeof W.screenY !== 'undefined') {
            N.outerPositionGet = function() {
                return {
                    top : W.screenY,
                    left : W.screenX
                };
            };
        } else {
            N.outerPositionGet = function() {
                return {
                    top : 0,
                    left : 0
                };
            };
        }
        return N.outerPositionGet();
    };
    N.outerSizeSet = function(size) {
        W.resizeTo(size.width, size.height);
    };
    N.outerSizeGet = function() {
        if (W.outerWidth) {
            N.outerSizeGet = function() {
                return {
                    width : W.outerWidth,
                    height : W.outerHeight
                };
            };
        } else {
            setFrameChrome();
            N.outerSizeGet = function() {
                var size;
                size = N.innerSizeGet();
                size.width += frameChrome.width;
                size.height += frameChrome.height;
                return size;
            };
        }
        return N.outerSizeGet();
    };
    N.innerSizeSet = function(size) {
        setFrameChrome();
        N.innerSizeSet = function(size) {
            W.resizeTo(size.width + frameChrome.width, size.height + frameChrome.height);
        };
        N.innerSizeSet(size);
    };
    N.innerSizeGet = function() {
        if (typeof W.innerHeight === 'number') {
            N.innerSizeGet = function() {
                return {
                    width : W.innerWidth,
                    height : W.innerHeight
                };
            };
            return N.innerSizeGet();
        }
        var isDocumentElementHeightOff, node;

        isDocumentElementHeightOff = function() {
            var div, r;
            div = W.document.createElement('div');
            div.style.height = "2500px";
            W.document.body.insertBefore(div, W.document.body.firstChild);
            r = W.document.documentElement.clientHeight > 2400;
            W.document.body.removeChild(div);
            return r;
        };

        if (typeof W.document.clientWidth === 'number') {
            node = W.document;
        } else if ((W.document.documentElement && W.document.documentElement.clientWidth === 0) || isDocumentElementHeightOff()) {
            node = W.document.body;
        } else if (W.document.documentElement.clientHeight > 0) {
            node = W.document.documentElement;
        }
        N.innerSizeGet = function() {
            return {
                width : node.clientWidth,
                height : node.clientHeight
            };
        };
        return N.innerSizeGet();
    };
    return N;
})();
Vytautas Jakutis
A: 

You have to open a popup like this:

window.open('url', 'windowname', 'location=0, status=0, resizable=1, scrollbars=1, width=400, height=400');

The trick is to make the window resizable. Search for the window.open() function documentation.

Jay