Показать сообщение отдельно
  #1 (permalink)  
Старый 22.12.2010, 20:33
Новичок на форуме
Отправить личное сообщение для Cawa Посмотреть профиль Найти все сообщения от Cawa
 
Регистрация: 22.12.2010
Сообщений: 2

Нужна помощь в адаптации скрипта под FireFox
Нужна помощь в доработке скрипта под FireFox, скрипт формирует HTML код с тегами IMG на случайные ресурсы изображений расположенных в каталоге imgh, HTML код формируется для элемента imgcontainer:
<span id="imgcontainer"><script>initiate()</script></span>

полный код скрипта:
var imgwidth=150
var imgheight=120
//количество отображаемых картинок
var imgview=3 
//количество фотографий в каталоге ресурсов
var imgcount=52
var pos_left=10
var pos_top=10
var cliptop=0
var clipbottom=imgheight
var clipleft=0
var clipright=imgwidth
//массив хранения ссылок на большое фото
var imgurl=new Array
//массив хранения ссылок на маленькое отображаемое фото
var imgname=new Array
//массив случайных чисел - нужен для формирования пути вида "[путь к каталогу ресурсов]\[случаное число].jpg
var rand=new Array
var rep=0

// функция исключающая повторение значений в массиве rand
function notrepeat(len,el){
	rep=0
	var j=0
	while (j<=len) {
		if(el==rand[j]){rep++}	
		//alert(el+" "+rand[j]+" "+rep)
		j++
	}
}

//формируем массив rand
for (i=0;i<=imgview-1;i++) {
	do{
		var randnum = Math.random();
                //формируем i элемент массива rand в диапазоне от 1 до imgcount 
		rand[i]=Math.round((imgcount - 1) * randnum) + 1
                //осуществляем проверку на уникальность i элемента
		notrepeat(i-1,rand[i])
		//alert(rep)
        //если i элемент не уникален(rep-глобальная переменная что задается в функции notrepeat), то заново проходим цикл, понимаю, что это очень не красиво, но это все на что хватило моих познаний в javascript для формирования массива случайных чисел без повторяющихся значений
	}while(rep>0);
}

//формирование путей
for (i=0;i<=imgview-1;i++) {
	imgname[i]="imgh/"+rand[i]+"s.jpg"
	imgurl[i]="imgh/"+rand[i]+".jpg"
}

function imgpreloder(){
	var imgpreload=new Array()
	for (i=0;i<=imgview-1;i++) {
		imgpreload[i]=new Image()
		imgpreload[i].src=imgname[i];
	}
}

function putimagesIE() {
	var str=""
	for(i=0;i<=imgview-1;i++) {
		str=str+"<a href='"+imgurl[i]+"' target='_blank'><img width='"+imgwidth+"' height='"+imgheight+"' src='"+imgname[i]+"' border='0'></a><br>"
	}
	imgcontainer.innerHTML=str
}

function putimagesNN() {
	for(i=0;i<=imgview-1;i++) {
		document.imgcontainer.document.write("<a href='"+imgurl[i]+"' target='_blank'><img width='"+imgwidth+"' height='"+imgheight+"' src='"+imgname[i]+"' border='0'></a><br>");
	}
	document.imgcontainer.document.close()
}

function initiate() {
	if (document.all) {
		document.all.imgcontainer.style.posLeft=pos_left
		document.all.imgcontainer.style.posTop=pos_top
		document.all.imgcontainer.style.clip="rect("+cliptop+" "+clipright+" "+clipbottom+" "+clipleft+")"
		putimagesIE()
	}
	if (document.layers) {
		document.imgcontainer.left=pos_left
		document.imgcontainer.top=pos_top
		document.imgcontainer.clip.left=clipleft
		document.imgcontainer.clip.right=clipright
		document.imgcontainer.clip.top=cliptop
		document.imgcontainer.clip.bottom=clipbottom
		putimagesNN()
	}
}

к сожалению данный скрипт отрабатывает как надо только в IE и Opera, но ни как не в FireFox.
Поскольку в javascript я полный ламер, я был бы рад выслушать всю критику написанного мной скрипта, особенно советы по улучшению.
Заранее большое спасибо.

Последний раз редактировалось Cawa, 22.12.2010 в 20:56.
Ответить с цитированием