Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Сверкающая ссылка. Скрипт не работает в фаерфоксе (https://javascript.ru/forum/css-html-firefox-mizilla/11668-sverkayushhaya-ssylka-skript-ne-rabotaet-v-faerfokse.html)

Wukong 06.09.2010 16:09

Сверкающая ссылка. Скрипт не работает в фаерфоксе
 
Всем привет. Повесили на меня сайт на работе, в яве сам не силен. Есть скрипт, который работает в опере и ИЕ, но не работает в фаерфоксе.

function domouseover() {
 
  srcElement = window.event.srcElement;
  if (srcElement.className.indexOf("fade") > -1) {
        var linkName = srcElement.name;
      fadein(linkName);
      }
      
}

function domouseout() {
  
  srcElement = window.event.srcElement;
  if (srcElement.className.indexOf("fade") > -1) {
        var linkName = srcElement.name;
      fadeout(linkName);
      }
      
}

function makearray(n) {
    this.length = n;
    for(var i = 1; i <= n; i++)
        this[i] = 0;
    return this;
}

hexa = new makearray(16);
for(var i = 0; i < 10; i++)
    hexa[i] = i;
hexa[10]="a"; hexa[11]="b"; hexa[12]="c";
hexa[13]="d"; hexa[14]="e"; hexa[15]="f";

function hex(i) {
    if (i < 0)
        return "00";
    else if (i > 255)
        return "ff";
    else
       return "" + hexa[Math.floor(i/16)] + hexa[i%16];}

function setbgColor(r, g, b, element) {
      var hr = hex(r); var hg = hex(g); var hb = hex(b);
      element.style.color = "#"+hr+hg+hb;
}

function fade(sr, sg, sb, er, eg, eb, step, direction, element){
    for(var i = 0; i <= step; i++) {
setTimeout("setbgColor(Math.floor(" +sr+ " *(( " +step+ " - " +i+ " )/ " +step+ " ) + " +er+ " * (" +i+ "/" +step+ ")),Math.floor(" +sg+ " * (( " +step+ " - " +i+ " )/ " +step+ " ) + " +eg+ " * (" +i+ "/" +step+ ")),Math.floor(" +sb+ " * ((" +step+ "-" +i+ ")/" +step+ ") + " +eb+ " * (" +i+ "/" +step+ ")),"+element+");",i*step);
    }
}
function fadeout(element) {
    fade(70,130,180, 200,200,200, 30, 1, element);
}
function fadein(element) {
    fade(200,200,200, 70,130,180, 23, 1, element);
}


document.addEventListener("mouseover", domouseover, false);
document.addEventListener("mouseover", domouseout, false);


В коде страницы обращение выглядит так:

<a href = "crem-plast.html" name="fading_link_5" class="fade">&nbsp crem-plast</a>


Может кто-нибудь подсказать в чем дело? Мне советовали попробовать addEventListener(https://developer.mozilla.org/en/DOM...dEventListener) использовать, но я что-то не очень въехал, как его под мой скрипт применить.
Скрипт используется на www.decor-fortuna.ru
Заранее спасибо за помощь!

monolithed 06.09.2010 16:44

Допустим так, хотя я бы все по иному переделал:

<script type="text/javascript">
document.onmouseover = function(event) {
    var event = event || window.event
    var target = event.target || event.srcElement; 
    if (target.className.indexOf("fade") > -1) {
        var linkName = target.id;
        fadein(linkName);
   }
};

document.onmouseout = function(event) {
    var event = event || window.event
    var target = event.target || event.srcElement;
  if (target.className.indexOf("fade") > -1) {
        var linkName = target.id;
        fadeout(linkName);
      }
};

function makearray(n) {
    this.length = n;
    for(var i = 1; i <= n; i++) {
        this[i] = 0;
	}
    return this;
}

hexa = new makearray(16);
for(var i = 0; i < 10; i++){
    hexa[i] = i;
	hexa[10]="a"; hexa[11]="b"; hexa[12]="c";
	hexa[13]="d"; hexa[14]="e"; hexa[15]="f";
}

function hex(i) {
    if (i < 0) {
        return "00";
	}
    else if (i > 255) {
        return "ff";
	}
    else {
       return "" + hexa[Math.floor(i/16)] + hexa[i%16];
	}
}

function setbgColor(r, g, b, element) {
      var hr = hex(r); var hg = hex(g); var hb = hex(b);
      element.style.color = "#"+hr+hg+hb;
}

function fade(sr, sg, sb, er, eg, eb, step, direction, element){
    for(var i = 0; i <= step; i++) {
setTimeout("setbgColor(Math.floor(" +sr+ " *(( " +step+ " - " +i+ " )/ " +step+ " ) + " +er+ " * (" +i+ "/" +step+ ")),Math.floor(" +sg+ " * (( " +step+ " - " +i+ " )/ " +step+ " ) + " +eg+ " * (" +i+ "/" +step+ ")),Math.floor(" +sb+ " * ((" +step+ "-" +i+ ")/" +step+ ") + " +eb+ " * (" +i+ "/" +step+ ")),"+element+");",i*step);
    }
}

function fadeout(element) {
    fade(70,130,180, 200,200,200, 30, 1, element);
}

function fadein(element) {
    fade(200,200,200, 70,130,180, 23, 1, element);
}
</script>

<a href="crem-plast.html" id="fading_link_5" class="fade">&nbsp crem-plast</a>

Wukong 08.09.2010 14:47

Спасибо огромное, очень выручили!

Wukong 09.09.2010 15:09

Кстати скрипт в отдельном файле не хочет работать чета)


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