سؤال

كيفية تمكين زر تعظيم واستعادة النافذة المنبثقة باستخدام JavaScript؟

هل كانت مفيدة؟

المحلول

باستخدام التعليمات البرمجية التي قمت بلصقها في الأسفل، يمكنك محاكاة هذه الأزرار عن طريق إنشاءها في واجهة موقع الويب الخاص بك.

لتعظيم: حفظ الموقع الحالي مع 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;
})();

نصائح أخرى

يجب عليك فتح نافذة منبثقة مثل هذا:

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

الحيلة هي جعل النافذة يمكن تغيير حجمها. البحث عن وثائق وظيفة النافذة .OPEN ().

أفترض أنك تتحدث عن تنبيه النوافذ المنبثقة؟ هذا لا يمكن القيام به مع جافا سكريبت القياسية.

أفضل حل هو محاولة استخدام بعض الحلول المنبثقة العديدة التي تم تطويرها لمختلف أطر JavaScript (مثل JQuery)، ورؤية ما إذا كان بإمكانك تكييف ذلك لاستخدامك الخاص.

جرب هذا أيضا. عملها بالنسبة لي ...

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

لا يمكنك، آسف - على الأقل، ليس عالميا. المنبثقة المنبثقة تعتمد على التنفيذ وليس هناك أي طرق JavaScript القياسية للتحكم في الأمر بالطريقة التي تصفها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top