Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> кроссбраузерность ф-ции 
:(
    Опции темы
Smith
Дата 30.3.2008, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 17.1.2007

Репутация: нет
Всего: 2



Код

var t = 1;
var n = 10;
var i = 0;

var fading = false;

function fade(sFadeFinishColor) {
    sFadeStartColor = document.body.style.backgroundColor;

    fading = setInterval(function() {
        if (i<=n) {
            i++;
            document.body.style.backgroundColor = getFadeMiddleColor(sFadeStartColor, sFadeFinishColor);
        } else {
            fading = clearInterval(fading);
            i = 0;
        }
    }, t);  
} 

function getFadeMiddleColor(sFadeStartColor, sFadeFinishColor) 
{
    if(window.XMLHttpRequest) { 
        var aRGBStart = sFadeStartColor.slice(4, -1).split(/,\s/); 
        var aRGBFinish = sFadeFinishColor.slice(4, -1).split(/,\s/);
    } else {
        var aRGBStart = sFadeStartColor.slice(1).match(/.{2}/g);
        var aRGBFinish = sFadeFinishColor.slice(1).match(/.{2}/g);
    }

    if(window.XMLHttpRequest)
        return 'rgb('+ Math.floor(aRGBStart[0] * ((n - i)/n) + aRGBFinish[0] * (i/n)) + ',' + Math.floor(aRGBStart[1] * ((n - i)/n) + aRGBFinish[1] * (i/n)) + ',' + Math.floor(aRGBStart[2] * ((n - i)/n) + aRGBFinish[2] * (i/n)) +')'; 
    else
        return 'rgb('+ Math.floor(('0x' + aRGBStart[0]) * ((n - i)/n) + ('0x' + aRGBFinish[0]) * (i/n)) + ',' + Math.floor(('0x' + aRGBStart[1]) * ((n - i)/n) + ('0x' + aRGBFinish[1]) * (i/n)) + ',' + Math.floor(('0x' + aRGBStart[2]) * ((n - i)/n) + ('0x' + aRGBFinish[2]) * (i/n)) +')'; 
}

код выполняется идеально под firefox, один раз под ie(при повторном выполнении - завершается с ошибкой) и вообще не выполняется в опере(из-за определения aRGBStart, aRGBStart - они не вовзращают нужного значения). Собтно, хелп smile 
PM MAIL   Вверх
fidres
Дата 16.12.2008, 05:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 15.11.2006

Репутация: нет
Всего: 1



setInterval() имеет две переменные (по крайней мере в IE): собственно имя функции, которую надо выполнить и количество милисекунд - ИНТЕРВАЛ, после которого эта функция вновь запустится.
а по поводу оперы - нам ещё повезло, что объект body.style почти одинаков в IE и FF.
;)
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0390 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.