Нужна помощь в адаптации скрипта под 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 я полный ламер, я был бы рад выслушать всю критику написанного мной скрипта, особенно советы по улучшению. Заранее большое спасибо. |
1) забудь про netscape
2) не пытайся выснить, в каком браузере выполняется код 3) используй document.getElementById вместо доступа к элементам через глобальные переменные 4) для отображения случайных картинок можешь использовать, например, shuffle 5) зачем тебе posLeft, clip? 6) выноси атрибуты, касающиеся оформления в css-файл, за исключением динамических, естественно |
Еще раз спасибо за все, советы помогли, совместимость с FireFox достигнута.
function initiate() { var elem = document.getElementById('imgcontainer'); 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>" } elem.innerHTML=str } |
напиши в css
img { border: none; } и не пиши border='0' в html |
Часовой пояс GMT +3, время: 22:08. |