powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Изменить расположение окна
6 сообщений из 6, страница 1 из 1
Изменить расположение окна
    #36616071
Eten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищи, помогите со следующей задачей, уже порядком меня утомившей...

Из окна-родителя открывается новое окно. Размеры этого окна подгоняются под содержимое (под размеры грида и фильтра). Далее необходимо центрировать окно.

Скрипт в странице-родителе:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
function OpenCatalog(catalogCode, returnFunctionName) {
    var params = "menubar=no,toolbar=no,location=no,directories=no,status=no,resizable=yes,scrollbars=no";
    var win = window.open("/Catalogs/DefaultCatalog.aspx, params);
    var c_width = win.document.body.clientWidth;
    var c_height = win.document.body.clientHeight;
    win.moveTo((screen.width - c_width) /  2 , (screen.height - c_height) /  2 );
}

Скрипт в открытом окне:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
    function resizeWindow() {
        var height =  0 ;
        var width =  0 ;
        var addheight =  0 ;
        var addwidth =  0 ;
        var gridID = eval("grid_ID");
        if (gridID != null) {
            var table = document.getElementById(gridID);
            if (table != null) {
                height = table.offsetHeight;
                width = table.offsetWidth;
            }
        }

        if (navigator.appName == "Microsoft Internet Explorer") {
            addwidth =  50 ;
            addheight =  260 ;
        }
       
        if (navigator.appName == "Netscape") {
            addwidth =  50 ;
            addheight =  320 ;
        }

        if (navigator.appName == "Opera") {
            addwidth =  50 ;
            addheight =  290 ;
        }
        
        if (height !=  0  && width !=  0 ) {

            var filterWidth = document.getElementById('filter');
            if (filterWidth != null) {
                if (width < filterWidth.offsetWidth)
                    window.resizeTo(filterWidth.offsetWidth + addwidth, height + addheight);
                else
                    window.resizeTo(width + addwidth, height + addheight);
            }
            else
                window.resizeTo(width + addwidth, height + addheight);
        }
    }

Дополнительные размеры в зависимости от браузера подобраны экспериментальным путем.
Проблема в том, что скрипт работает через раз и только в IE. Иногда возникает ошибка "Требуется объект" в строке
Код: plaintext
var c_width = win.document.body.clientWidth
Подскажите, пожалуйста, что я делаю не так!
...
Рейтинг: 0 / 0
Изменить расположение окна
    #36616072
Eten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скрипт работающий через раз - это тот, который центрирует. Размеры окна подгоняются нормально во всех браузерах
...
Рейтинг: 0 / 0
Изменить расположение окна
    #36617381
Eten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ!? moveTo работает только в IE?
...
Рейтинг: 0 / 0
Изменить расположение окна
    #36617396
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот эта штука "win.document.body.clientHeight" очень капризная и здорово зависит от доктайпа.
...
Рейтинг: 0 / 0
Изменить расположение окна
    #36617447
Eten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как тогда получить размеры окна ?
...
Рейтинг: 0 / 0
Изменить расположение окна
    #36617513
Eten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел решение для получения размеров окна:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
function get_ww(window) {
    var frameWidth =  800 ;
    if (window.self.innerWidth)
        frameWidth = window.self.innerWidth;
    else if (window.document.documentElement && window.document.documentElement.clientWidth)
        frameWidth = window.document.documentElement.clientWidth;
    else if (window.document.body)
        frameWidth = window.document.body.clientWidth;
    return frameWidth;
}

function get_wh(window) {
    var frameHeight =  640 ;
    if (window.self.innerHeight)
        frameHeight = window.self.innerHeight;
    else if (window.document.documentElement && window.document.documentElement.clientHeight)
        frameHeight = window.document.documentElement.clientHeight;
    else if (window.document.body)
        frameHeight = window.document.body.clientHeight;
    return frameHeight;

Образмеривается все как надо и центруется тоже во всех браузерах. Есть две проблемы:
1) в Опере и Лисе окно сначала открывается в дефолтном положении, а при повторном вызове центруется
2) в Опере почему-то при повтортном вызове окна не отбрабатывает фокус

народ всезнающий, куда теперь копать? ))
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Изменить расположение окна
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]