Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   Модуль для работы с геометрией окна (https://javascript.ru/forum/library-toolkit-framework/4931-modul-dlya-raboty-s-geometriejj-okna.html)

JSprog 31.08.2009 10:57

Модуль для работы с геометрией окна
 
Хочу представить вам ещё один модуль Дэвида Флэнагана.
Для работы с геометрией окна.
Задача модуля:представить кросс-браузерные методы для определения:
1)положения окна на экране
2)размеров клиентской области окна
3)размеров документа
4)смещения документа относительно окна
var Geometry = {};
if (window.screenLeft === undefined) { // Для IE и других
Geometry.getWindowX = function() { return window.screenLeft; };
Geometry.getWindowY = function() { return window.screenTop; };
}
else if (window.screenX) { // Для Firefox и других
Geometry.getWindowX = function() { return window.screenX; };
Geometry.getWindowY = function() { return window.screenY; };
}


if (window.innerWidth) { // Все броузеры, кроме IE
Geometry.getViewportWidth = function() { return window.innerWidth; };
Geometry.getViewportHeight = function() { return window.innerHeight; };
Geometry.getHorizontalScroll = function() { return window.pageXOffset; };
Geometry.getVerticalScroll = function() { return window.pageYOffset; };
}
else if (document.documentElement && document.documentElement.clientWidth) {
// Эти функции предназначены для IE и документов с объявлением DOCTYPE
Geometry.getViewportWidth =
function() { return document.documentElement.clientWidth; };
Geometry.getViewportHeight =
function() { return document.documentElement.clientHeight; };
Geometry.getHorizontalScroll =
function() { return document.documentElement.scrollLeft; };
Geometry.getVerticalScroll =
function() { return document.documentElement.scrollTop; };
}
else if (document.body.clientWidth) {
// Эти функции предназначены для IE без объявления DOCTYPE
Geometry.getViewportWidth =
function() { return document.body.clientWidth; };
Geometry.getViewportHeight =
function() { return document.body.clientHeight; };
Geometry.getHorizontalScroll =
function() { return document.body.scrollLeft; };
Geometry.getVerticalScroll =
function() { return document.body.scrollTop; };
}


// Следующие функции возвращают размеры документа.
// Они не имеют отношения к окну, но бывает удобно иметь их.
if (document.documentElement && document.documentElement.scrollWidth) {
Geometry.getDocumentWidth =
function() { return document.documentElement.scrollWidth; };
Geometry.getDocumentHeight =
function() { return document.documentElement.scrollHeight; };
}
else if (document.body.scrollWidth) {
Geometry.getDocumentWidth =
function() { return document.body.scrollWidth; };
Geometry.getDocumentHeight =
function() { return document.body.scrollHeight; };
}

Kolyaj 31.08.2009 12:02

JSprog,
ты в наборе текста тренируешься? Или тебе их даже перепечатывать не приходится?

B~Vladi 31.08.2009 12:09

Функции определения клиентской области неправильные.

JSprog 31.08.2009 12:10

Цитата:

Сообщение от Kolyaj
Функции определения клиентской области неправильные.

Почему?

Kolyaj 31.08.2009 12:11

JSprog,
во-первых, это не моя цитата. Во-вторых, ты сам-то проверял все те функции, которые постишь?

JSprog 31.08.2009 12:13

Я хз почему написано что твоя=)
Да всё работет

JSprog 31.08.2009 12:20

А если ты про то что там есть отдельно для doctype и без него то это для старых версий ИЕ

Kolyaj 31.08.2009 12:25

Цитата:

Сообщение от JSprog
Да всё работет

В скольких браузерах проверял?

И еще: если уж выкладываешь скрипты, так оформляй их нормально.

JSprog 31.08.2009 12:32

В ИЕ и в Мозиле(а значит и всех W3C браузерах)

B~Vladi 31.08.2009 12:33

Вот и без всяких DOCTYPE

function getClientWidth(){return document.compatMode=='CSS1Compat'&&!window.opera?document.documentElement.clientWidth:document.body.clientWidth;}
function getClientHeight(){return document.compatMode=='CSS1Compat'&&!window.opera?document.documentElement.clientHeight:document.body.clientHeight;}


Часовой пояс GMT +3, время: 23:17.