Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 20.05.2009, 14:54
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от B~Vladi
если у Вас есть что-то конкретное - говорите...
prototype.1.6.1_rc2.js
str 3093

document.viewport = {

  getDimensions: function() {
    return { width: this.getWidth(), height: this.getHeight() };
  },

  getScrollOffsets: function() {
    return Element._returnOffset(
      window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
      window.pageYOffset || document.documentElement.scrollTop  || document.body.scrollTop);
  }
};

(function(viewport) {
  var B = Prototype.Browser, doc = document, element, property = {};

  function getRootElement() {
    if (B.WebKit && !doc.evaluate)
      return document;

    if (B.Opera && window.parseFloat(window.opera.version()) < 9.5)
      return document.body;

    return document.documentElement;
  }

  function define(D) {
    if (!element) element = getRootElement();

    property[D] = 'client' + D;

    viewport['get' + D] = function() { return element[property[D]] };
    return viewport['get' + D]();
  }

  viewport.getWidth  = define.curry('Width');

  viewport.getHeight = define.curry('Height');
})(document.viewport);


Единственный минус: не учитывается compatMode. Но это сейчас уже не столь актуально.

Последний раз редактировалось Riim, 20.05.2009 в 14:56.
Ответить с цитированием
  #22 (permalink)  
Старый 20.05.2009, 15:09
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Очень хрупко...

window.parseFloat(window.opera.version()) < 9.5


Не стал бы таким пользоваться...
Ответить с цитированием
  #23 (permalink)  
Старый 20.05.2009, 15:10
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

prototype.1.6.1_rc2.js
не до конца понятно для чего этот код.
Ответить с цитированием
  #24 (permalink)  
Старый 20.05.2009, 15:15
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от B~Vladi
Очень хрупко...
У вас предвзятое мнение. Хрупко как раз у вас.
Ответить с цитированием
  #25 (permalink)  
Старый 20.05.2009, 15:20
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Riim Посмотреть сообщение
У вас предвзятое мнение. Хрупко как раз у вас.
Везде и в любых авторитетных источниках говорится о неправильном подходе к написанию кросс-браузерных функций. А именно о том, что почти во всех библиотеках и фреймворках есть проверка версии или типа браузера и не её основе строят логику. Это не есть гуд. Покажите мне кусок моего кода, где используется неправельный код.
Ответить с цитированием
  #26 (permalink)  
Старый 20.05.2009, 15:24
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

ИМХО

писать такие вещи нада так, что бы в конце всех условий была такая контрукция, которая описана в доках W3C.
Ответить с цитированием
  #27 (permalink)  
Старый 20.05.2009, 15:33
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от B~Vladi
А именно о том, что почти во всех библиотеках и фреймворках есть проверка версии или типа браузера и не её основе строят логику. Это не есть гуд.
Мнение в некотором смысле верное, но и меру нужно знать. В Opera9.5+ верное значение перенесли в documentElement.clientHeight. Как вы это хотите определить с помощью:
Сообщение от B~Vladi
Вместо этого идёт проверка соответствующих своиств или методов
?

Факт остается фактом: пока ваш вариант некроссбраузерен. Вариант из PrototypeJs, по-вашему, плох, но он работает верно. Когда напишете вашим способом кроссбраузерный вариант, тогда и поговорим.
Ответить с цитированием
  #28 (permalink)  
Старый 20.05.2009, 15:35
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от B~Vladi
писать такие вещи нада так, что бы в конце всех условий была такая контрукция, которая описана в доках W3C.
К этому нужно стремиться, но при всем желании это не всегда возможно.
Ответить с цитированием
  #29 (permalink)  
Старый 20.05.2009, 15:42
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Riim Посмотреть сообщение
documentElement.clientHeight.
А в чём, собственно, проблема?! Пусть переносят...

Сообщение от Riim Посмотреть сообщение
Факт остается фактом: пока ваш вариант некроссбраузерен. Вариант из PrototypeJs, по-вашему, плох, но он работает верно. Когда напишете вашим способом кроссбраузерный вариант, тогда и поговорим.
Мой вариант кроссбраузен для тех, которые я описал (IE, FF, Opera всех актуальных версий) и я сомневаюсь, что в Safari или Chrome что-то не сработает. Зачем так утверждать?! Лучше напишите ту ф-цию, которая не работает в заявленных браузерах.

Никто не говорил, что вариант из prototype плох.

Какой способ мне написать?! аналог их объекта?!
Ответить с цитированием
  #30 (permalink)  
Старый 20.05.2009, 15:57
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от B~Vladi
А в чём, собственно, проблема?! Пусть переносят...
Давно уже перенесли. И в вашем скрипте это не учитывается.

Сообщение от B~Vladi
Мой вариант кроссбраузен для тех, которые я описал (IE, FF, Opera всех актуальных версий)
Это вы так думаете. Простейший пример: уберите DOCTYPE из документа или поставьте любой старый. Ну как, правильно работает?

Сообщение от B~Vladi
и я сомневаюсь, что в Safari или Chrome что-то не сработает.
Как же вы можете утверждать, что функции кроссбраузерены, если вы их даже толком не тестируете.

----

Вы слышите только себя и ваше мнение всегда самое правильное? Обсуждение теряет смысл.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паралельное выполнение одной и той-же функции Сеня AJAX и COMET 3 24.01.2009 20:59
Вопрос по функции Flex Общие вопросы Javascript 3 05.12.2008 04:03
Как проверить существование функции Aderba Общие вопросы Javascript 2 14.11.2008 16:09
владелец функции diagnost Общие вопросы Javascript 6 30.10.2008 15:04
Помогите разобраться в повторным обращении к функции, как её обнулить. AdvoGad Общие вопросы Javascript 0 01.09.2008 11:35