Вход

Просмотр полной версии : Сверкающая ссылка. Скрипт не работает в фаерфоксе


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/element.addEventListener) использовать, но я что-то не очень въехал, как его под мой скрипт применить.
Скрипт используется на 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
Кстати скрипт в отдельном файле не хочет работать чета)