Управління вікнами Web-браузером
Можна також створити в програмно створеному вікні змінну і помістити в неї екземпляр об'єкта window, що відповідає вікну, що створює. Але це дуже незручно, оскільки ми можемо отримати доступ до оголошених у створеному програмному вікні змінних та функцій лише після закінчення завантаження сторінки у цьому вікні. Тож краще цим способом не користуватися.
Потрібно відзначити, що цей спосіб може бути корисним, якщо ми маємо відразу кілька програмно створених вікон і хочемо, щоб одне з них керувало іншим.
Як змінити розміри та розташування вікна?
Я хочу встановити розміри та розташування вікна Web-браузера зі сценарію. Чи можна це зробити?
Спеціально для цього призначено чотири методи об'єкта window. Усі вони перелічені далі.
moveBy( , ) — зміщує вікно на задану кількість пікселів вправо та вниз. Для переміщення вліво та вгору потрібно задати негативні значення відповідних параметрів.
moveTo( , )—переміщує вікно в точку екрана із заданими координатами.
resizeBy( , ) — збільшує розміри вікна на задану кількість пікселів. Для зменшення розмірів вікна необхідно задати негативні значення відповідних параметрів.
, ) - Задає розміри вікна.
Потрібно мати на увазі, що багато веб-браузерів (зокрема, Opera і Firefox) дозволяють блокувати Web-сценарії, що переміщають вікна і змінюють їх розміри.
Ось HTML-код сторінки, яка автоматично розгортає вікно Web-браузера на весь екран.
Як мені отримати координати та розміри вікна?
Мені потрібно отримати координати та розміри вікна Web-браузера. Це можливо?
В принципі, можливо, але доведеться зважати на несумісність різних програм Web-браузерів. Давайте поговоримо про це. І почнемо зкоординат вікна Web-браузера - їх отримати простіше.
За координати вікна "відповідають" властивості screenLeft і screenTop об'єкта window. Перша властивість повертає горизонтальну координату лівого верхнього кута вікна Web-браузера, друга - його вертикальну координату. Ці властивості підтримуються Internet Explorer та Opera.
Щоб з'ясувати координати вікна Firefox, нам доведеться звернутися до властивостей screenx і screenY. Ці властивості також належать об'єкту window.
Перейдемо до розмірів вікна. Тут найкраще себе показують Opera і Firefox - вони надають властивості outerwidth і outerHeight об'єкта window, що повертають відповідно ширину та висоту вікна.
На жаль, обчислити розміри вікна в Internet Explorer неможливо. Можна тільки дізнатися розміри клієнтської області вікна, використовуючи властивості clientwidth і clientHeight об'єкта body, що представляє тіло сторінки і вкладеного в об'єкт document.
Так, Internet Explorer - чудова програма, але не без прикрих огріхів. Ну що варто розробникам додати в його об'єкт window якісь властивості screenwidth і screenHeight. Адже так не додали.
Як вирівняти вікно на краю екрана?
Мені потрібно вирівняти вікно Web-браузера по певному краю екрана. Як це зробити?
Використання універсальної функції jspsAiignwindow (листинг 4.1). Формат її виклику такий:
Першим параметром передається вікно, яке потрібно вирівняти на краю екрана. Це єдиний обов'язковий параметр функції jspsAlignWindow.
Другим параметром цієї функції передається числове значення, що задає край екрану, яким потрібно вирівняти вікно. Ось всі доступні значення цього параметра (наведені імена псевдоконстант, значення яких можна знайти влістингу 4.1):
jsps_aw_left - по лівому краю;
jsps_aw_lefttop - по лівому та верхньому краю екрану (тобто помістити вікно в його лівий верхній кут);
jsps_aw_top - по верхньому краю;
jsps_aw_righttop - по правому та верхньому краю (у правий верхній кут);
jsps_aw_right - по правому краю;
jsps_aw_rightbottom - по правому і нижньому краю (у правий нижній кут);
jsps_aw_bottom - по нижньому краю;
jsps_aw_leftbottom - по лівому та нижньому краю (у лівий нижній кут);
jsps_aw_center - по центру;
jsps_aw_full - повне вирівнювання (тобто вікно буде розтягнуте на весь екран).
Якщо другий параметр не вказано, вікно буде вирівняне по центру, якби ми вказали значення jsps_aw_center.
Третій параметр функції jspsAlignwindow дозволяє вказати, чи розтягувати вікно вздовж краю екрана, яким вирівнювання, так, щоб воно зайняло його повністю. Якщо вказано true, вікно буде розтягнуте; Значення false наказує залишити розміри вікна незмінними. Перепустка третього параметра еквівалентна вказівці значення false.
Потрібно мати на увазі, що третій параметр функції jspsAlignwindow має сенс лише за значення другого параметра, рівних jsps_aw_left,
jsps_aw_top, jsps_aw_right та jsps_aw_bottom. В інших випадках його буде проігноровано.
Функція jspsAiignwindow не повертає значення.
Максимізовані вікна функція jspsAiignwindow вирівнює некоректно. І це зрозуміло - якщо вікно розгорнуто на весь екран, його просто неможливо "притиснути" до якогось одного краю.
Лістинг 4.1. Функція jspsAiignwindow. вікна, що виконує вирівнювання Web-'Обозревателя уздовж заданого краю екрану
var JSPS_AW_LEFT = 0;
var JSPS_AW_LEFTTOP = 1;
var JSPS_AW_TOP = 2;
var JSPS_AW_RIGHTTOP = 3;
var JSPS_AW_RIGHT = 4;
var JSPS_AW_RIGHTBOTTOM = 5;
var JSPS_AW_BOTTOM = 6;
var JSPS_AW_LEFTBOTTOM = 7;
var JSPS_AW_CENTER = 8;
var JSPS_AW_FULL = 9;
функція jspsAlignWindow(windowObject, edge, doResize)
if (typeof(edge) == "undefined") edge = JSPS_AW_CENTER; if (!doResize) doResize = false;
var piObj = jspsGetProgramlnfo(); varrightmostPixel = screen.availw >
windowObject.resizeTo(winWidth, bottommostPixel -correctionY) ;
windowObject.moveTo(0, winY - виправленняY); перерва; case JSPS_AW_LEFTTOP:
windowObject.moveTo(0, 0); перерва ; case JSPS_AW_TOP: if (doResize) < windowObject.moveTo (0, 0) ;
windowObject.resizeTo(rightmostPixel - correctionX,winHeight) ; > інше
windowObject.moveTo(winX - correctionX, 0) ; перерва; випадок JSPS_AW_RIGHTTOP:
windowObject.moveTo(rightmostPixel - winWidth - correctionX,0); перерва; case JSPS_AW_RIGHT: if (doResize)
windowObject.moveTo(rightmostPixel - winWidth -correctionX, 0) ;
windowObject.resizeTo(winWidth, bottommostPixel -correctionY) ; > інше
windowObject.moveTo(rightmostPixel - winWidth - correctionX,winY - correctionY) ; перерва; випадок JSPS_AW_RIGHTBOTTOM:
windowObject.moveTo(rightmostPixel - winWidth - correctionX,bottommostPixel - winHeight - correctionY); перерва; case JSPS_AW_BOTTOM: if (doResize) < windowObject.moveTo(0, bottommostPixel - winHeight -correctionY) ;
windowObject.resizeTo(rightmostPixel - correctionX,winHeight); > інше
windowObject.moveTo(winX - correctionX, bottommostPixel -winHeight - correctionY) ; перерва; випадок JSPS_AW_LEFTBOTTOM:
windowObject.moveTo(0, bottommostPixel -winHeight -correctionY); break; case JSPS_AW_CENTER:
windowObject.moveTo((rightmostPixel - winWidth - correctionX) /2, (bottommostPixel - winHeight - correctionY) / 2); break; case JSPS_AW_FULL:
windowObject.resizeTo(rightmostPixel - correctionX,bottommostPixel - correctionY); break; > >
jspsAlignWindow(window, JSPS_AW_BOTTOM, false);
Це вирівняє поточне вікно Web-браузера по нижньому краю екрана без розтягування.