Всплывающее окно Кнопка «Развернуть»

Как включить кнопку максимизации и восстановления всплывающего окна с помощью Javascript?


person MAC    schedule 12.01.2010    source источник


Ответы (5)


Используя код, который я вставил внизу, вы можете эмулировать эти кнопки, создав их в интерфейсе вашего веб-сайта.

Чтобы максимизировать: сохраните текущую позицию с помощью Namespace.outerPositionGet() и размер с помощью Namespace.outerSizeGet(), затем выполните Namespace.outerPositionSet({left:0,top:0}) и Namespace.outerSizeSet({width:window.screen.availWidth, height:window.screen.availHeight}).

Чтобы восстановить: просто установите положение и размер, которые были сохранены при максимизации.

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;
})();
person Vytautas Jakutis    schedule 12.01.2010

Вы должны открыть всплывающее окно следующим образом:

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

Хитрость заключается в том, чтобы изменить размер окна. Найдите документацию по функции window.open().

person Jay    schedule 21.10.2010

Я предполагаю, что вы говорите о всплывающем окне с предупреждением? Это невозможно сделать с помощью стандартного JavaScript.

Лучшим решением было бы попробовать использовать некоторые из множества решений для всплывающих окон, которые были разработаны для различных фреймворков JavaScript (например, jQuery), и посмотреть, сможете ли вы адаптировать их для своего конкретного использования.

person James Wiseman    schedule 12.01.2010

попробуйте и это. у меня работает...

 window.open('fileURL','status=1,directories=1,menubar=0,toolbar=0,
              scrollbars=1,titlebar=0,dialog=1)
person kalarav    schedule 03.09.2014

Вы не можете, извините - по крайней мере, не повсеместно. Всплывающее окно зависит от реализации, и нет никаких стандартных методов JavaScript для управления им так, как вы описываете.

person Sam Holloway    schedule 12.01.2010