Тема: комментарии конфликтуют со слайд шоу

на странице есть слайд шоу, при открытие новости с комментарием слайд шоуй перестает работать smile
почему так может быть? пересечение переменных?
код слайд шоу js:

var bxs,bxe,fxs,fxe,ys,ye,ta,ia,ie,st,ss,ft,fs,xp,yp,ci,t,tar,tarl;
ta = document.getElementById(thumbid);
ia = document.getElementById(imgid);
t = ta.getElementsByTagName('li')
ie = document.all ? true : false;
st = 3;
ss = 3;
ft = 10;
fs = 5;
xp,yp = 0;
document.onmousemove = getPos;

function slideShow(){
  var taw = ta.parentNode.offsetWidth;
  var taa = taw / 4;
  bxs = leftPos(ta);
  bxe = bxs + taa;
  fxe = bxs + taw;
  fxs = fxe - taa;
  ys = topPos(ta);
  ye = ys + ta.offsetHeight;
  var len = t.length;
  tar = [];
  for(i=0; i < len; i++){
    var id = t[i].id;
    tar[i] = id; 
    t[i].onclick = new Function("getImg('" + id + "')");
    if(i == 0) {
      getImg(id);
    }
  }
  tarl = tar.length;
}

function cnclScrl(){clearTimeout(ta.timer)}

function getImg(id){
  var hl = id.indexOf('_');
  var is,ip,il;
  if(hl != -1){
    ip = id.split('_');
    is = ip[0];
    il = ip[1];
  }else{
    is = id;
  }
  if(auto){clearTimeout(ia.timer)}
  if(ci != null){
    var ts = ia.getElementsByTagName('img');
    var tsl = ts.length;
    var x = 0;
    for(x; x < tsl; x++){
      if(ci.id != id){
        var o = ts[x];
        clearInterval(o.timer);
        o.timer = setInterval(function(){fdOut(o)},fs);
      }
    }
  }
  var i;
  if(!document.getElementById(ie)){
    if(hl != -1){
      a = document.createElement('a');
      a.setAttribute('href',il);
      ia.appendChild(a);
      i = document.createElement('img');
      a.appendChild(i);
    }else{
      i = document.createElement('img');
      ia.appendChild(i);
    }
    i.id = id;
    i.av = 0;
    i.style.opacity = 0;
    i.style.filter = 'alpha(opacity=0)';
    i.src = imgdir + '/' + is;

i.onclick= function(){ 
  location.href= id ; 
}

  }else{
    i = document.getElementById(is);
    clearInterval(i.timer);
  }
  i.timer = setInterval(function(){fdIn(i)},fs);
}

function imgNav(d){
  var curr = 0;
  var ae,ie;
  for(key in tar){
    ae = tar[key].split('_');
    if(ae[0] == ci.id){
      curr = key;
    }
  }
  if(tar[parseInt(curr) + d]){
    ie = tar[parseInt(curr) + d];
  }else{
    if(d == 1){
      ie = tar[0];
    }else{
      ie = tar[tarl - 1];
    }
  }
  getImg(ie);
}

function autoSlide(){
  ia.timer = setInterval(function(){imgNav(1)}, autodelay * 1000);
}

function fdIn(i){
  if(i.complete){
    i.av = i.av + fs;
    i.style.opacity = i.av / 100;
    i.style.filter = 'alpha(opacity=' + i.av + ')';
  }
  if(i.av >= 100){
    if(auto){autoSlide()}
    clearInterval(i.timer);
    ci = i;
  }
}

function getPos(e){
  if(ie){
    xp = event.clientX + document.body.scrollLeft;
    yp = event.clientY + document.body.scrollTop;
  }else{
    xp = e.pageX;
    yp = e.pageY;
  }  
  if(xp < 0){xp = 0}
  if(yp < 0){yp = 0}
  if(xp > bxs && xp < bxe && yp > ys && yp < ye){
    scrlThumbs(-1);
  }else if(xp > fxs && xp < fxe && yp > ys && yp < ye){
    scrlThumbs(1);
  }else{
    cnclScrl();
  }
}

function leftPos(t){
  var left = 0;
  if(t.offsetParent){
    while(1){
      left += t.offsetLeft;
      if(!t.offsetParent){break}
      t = t.offsetParent;
    }
  }else if(t.x){
    left += t.x;
  }
  return left;
}

function topPos(t){
  var top = 0;
  if(t.offsetParent){
    while(1){
      top += t.offsetTop;
      if(!t.offsetParent){break}
      t = t.offsetParent;
    }
  }else if(t.y){
    top += t.y;
  }
  return top;
}
Strawberry 1.1.1

Re: комментарии конфликтуют со слайд шоу

Killa пишет:

пересечение переменных?

Совершенно верно! В библиотеке prototype.js несколько функций отвечают за ajax-обработку комментариев, она и конфликтует.

Совет: найдите в Сети скрипт слайд-шоу, написанный под prototype.js

Re: комментарии конфликтуют со слайд шоу

я уже с етими слайдшоу сума сошел smile нашел то что мне нужно но он на JS... других подходящих нету,
так получается неразумно переименовывать каким либо образом переменные?

Strawberry 1.1.1

Re: комментарии конфликтуют со слайд шоу

Killa, пишете в Яндексе "слайдшоу на protorype" и наслаждаетесь результатом.

5

Re: комментарии конфликтуют со слайд шоу

Killa, можете показать ваше слайдшоу?

ЗЫ http://ajaxorized.com/image-transition-manager/

Re: комментарии конфликтуют со слайд шоу

Собственно от автора скрипта вот: http://sandbox.leigeber.com/slideshow2/

мой же с доработками и "изуродованием его исходника" выгядит так:

slide/slide.js

var bxs,bxe,fxs,fxe,ys,ye,ta,ia,ie,st,ss,ft,fs,xp,yp,ci,t,tar,tarl;
ta = document.getElementById(thumbid);
ia = document.getElementById(imgid);
t = ta.getElementsByTagName('li')
ie = document.all ? true : false;
st = 3;
ss = 3;
ft = 10;
fs = 5;
xp,yp = 0;
document.onmousemove = getPos;

function slideShow(){
  var taw = ta.parentNode.offsetWidth;
  var taa = taw / 4;
  bxs = leftPos(ta);
  bxe = bxs + taa;
  fxe = bxs + taw;
  fxs = fxe - taa;
  ys = topPos(ta);
  ye = ys + ta.offsetHeight;
  var len = t.length;
  tar = [];
  for(i=0; i < len; i++){
    var id = t[i].id;
    tar[i] = id; 
    t[i].onclick = new Function("getImg('" + id + "')");
    if(i == 0) {
      getImg(id);
    }
  }
  tarl = tar.length;
}

function cnclScrl(){clearTimeout(ta.timer)}

function getImg(id){
  var hl = id.indexOf('_');
  var is,ip,il;
  if(hl != -1){
    ip = id.split('_');
    is = ip[0];
    il = ip[1];
  }else{
    is = id;
  }
  if(auto){clearTimeout(ia.timer)}
  if(ci != null){
    var ts = ia.getElementsByTagName('img');
    var tsl = ts.length;
    var x = 0;
    for(x; x < tsl; x++){
      if(ci.id != id){
        var o = ts[x];
        clearInterval(o.timer);
        o.timer = setInterval(function(){fdOut(o)},fs);
      }
    }
  }
  var i;
  if(!document.getElementById(ie)){
    if(hl != -1){
      a = document.createElement('a');
      a.setAttribute('href',il);
      ia.appendChild(a);
      i = document.createElement('img');
      a.appendChild(i);
    }else{
      i = document.createElement('img');
      ia.appendChild(i);
    }
    i.id = id;
    i.av = 0;
    i.style.opacity = 0;
    i.style.filter = 'alpha(opacity=0)';
    i.src = imgdir + '/' + is;

i.onclick= function(){ 
  location.href= id ; 
}

  }else{
    i = document.getElementById(is);
    clearInterval(i.timer);
  }
  i.timer = setInterval(function(){fdIn(i)},fs);
}

function imgNav(d){
  var curr = 0;
  var ae,ie;
  for(key in tar){
    ae = tar[key].split('_');
    if(ae[0] == ci.id){
      curr = key;
    }
  }
  if(tar[parseInt(curr) + d]){
    ie = tar[parseInt(curr) + d];
  }else{
    if(d == 1){
      ie = tar[0];
    }else{
      ie = tar[tarl - 1];
    }
  }
  getImg(ie);
}

function autoSlide(){
  ia.timer = setInterval(function(){imgNav(1)}, autodelay * 1000);
}

function fdIn(i){
  if(i.complete){
    i.av = i.av + fs;
    i.style.opacity = i.av / 100;
    i.style.filter = 'alpha(opacity=' + i.av + ')';
  }
  if(i.av >= 100){
    if(auto){autoSlide()}
    clearInterval(i.timer);
    ci = i;
  }
}

function getPos(e){
  if(ie){
    xp = event.clientX + document.body.scrollLeft;
    yp = event.clientY + document.body.scrollTop;
  }else{
    xp = e.pageX;
    yp = e.pageY;
  }  
  if(xp < 0){xp = 0}
  if(yp < 0){yp = 0}
  if(xp > bxs && xp < bxe && yp > ys && yp < ye){
    scrlThumbs(-1);
  }else if(xp > fxs && xp < fxe && yp > ys && yp < ye){
    scrlThumbs(1);
  }else{
    cnclScrl();
  }
}

function leftPos(t){
  var left = 0;
  if(t.offsetParent){
    while(1){
      left += t.offsetLeft;
      if(!t.offsetParent){break}
      t = t.offsetParent;
    }
  }else if(t.x){
    left += t.x;
  }
  return left;
}

function topPos(t){
  var top = 0;
  if(t.offsetParent){
    while(1){
      top += t.offsetTop;
      if(!t.offsetParent){break}
      t = t.offsetParent;
    }
  }else if(t.y){
    top += t.y;
  }
  return top;
}

css/style.css

#image {position:relative; width:899px; height:260px; padding:0px; border:0; url(../images/loading.gif) center center no-repeat}
#image img {position:absolute; top:4px; left:0px; margin:0; border:0; padding:0}
.imgnav {position:absolute; height:200px; z-index:100; height:200px; width:20%; z-index:100; outline:none; cursor:pointer; margin:0; padding:0}
#thumbs {list-style:none; margin:0; padding:0}
#previmg {left:0; background:url(../images/left.png) left center no-repeat;}
#nextimg {right:0; background:url(../images/right.png) right center no-repeat;}

HTML:

    <div id="image">
      <a href="javascript:imgNav(-1)" class="imgnav " id="previmg"></a>
      <a href="javascript:imgNav(1)" class="imgnav " id="nextimg"></a>
    </div>

        <ul id="thumbs">

<?php  
if ($handle = opendir('slide')) { 
   while (false !== ($file = readdir($handle))) {  
       if ($file != "." && $file != "..") {  
           echo '<li id="'.$file.'"></li>';  
       }  
   } 
   closedir($handle);  
} 
?>


        </ul>

<script type="text/javascript">
var imgid = 'image';
var imgdir = 'slide';
var thumbid = 'thumbs';
var auto = true;
var autodelay = 10;
</script>
<script type="text/javascript" src="js/slide.js"></script>

Функции слайда:
Slideshow
+ auto слайд
+ control панель врепед назад
+ fade effect, эффект затухания

скрипт PHP написал чтобы через админку можно было легче одбавлять слайды, он считывает из папки все файлы и вставляет в <li id="...">
название файла является ссылкой smile) на ЧПУ )))

2 минуты и 31 секунду спустя:

+ приходится изза этого файлы JPG переименовывать в *.htm lol
иначе ссылка будет
.ru/ssilka_nazvanie.jpg

Strawberry 1.1.1

Re: комментарии конфликтуют со слайд шоу

Killa пишет:

приходится изза этого файлы JPG переименовывать в *.htm

в топку такое слайд-шоу!

Re: комментарии конфликтуют со слайд шоу

вот вот... я и думал как же в JS вписывать ID которое является названием файла, выводить без расширения sad

Strawberry 1.1.1

9

Re: комментарии конфликтуют со слайд шоу

Я в свое время намучился с этим слайдшоу. big_smile
ANT-Soft, совершенно прав, в топку.
Единственное что  можно попробовать - поставить более познюю версию prototype.js.

Re: комментарии конфликтуют со слайд шоу

ANT-Soft пишет:
Killa пишет:

приходится изза этого файлы JPG переименовывать в *.htm

в топку такое слайд-шоу!

в исходном варианте от автора можно так и не делать а просто в LI указать:
images.jpg_url.html
_ разделитель между ссылкой и картинкой...

но у него косяк у автора, второй слайд если является тоже изображением и ссылкой то скрипт просто виснет и не переключает слайды... мде, вот такая бадяга

Strawberry 1.1.1

Re: комментарии конфликтуют со слайд шоу

Я на форуме уже указывал версию слайд шоу которое прекрасно работает с прототипом ))

Здесь молодость бродит крылато, и старость не клонит голов...
Демо площадка Strawberry 1.2 - заходим и тестируем!

12

Re: комментарии конфликтуют со слайд шоу

Miksar, где это слайд шоу ?

Re: комментарии конфликтуют со слайд шоу

ммм... так и заставили искать, ща скажу...

2 минуты и 16 секунд спустя:

http://www.dolem.com/lytebox/ - во ))
Прекрасно работает! Сам ставил заказчику.

Скачать последний прототип: http://www.prototypejs.org/

Здесь молодость бродит крылато, и старость не клонит голов...
Демо площадка Strawberry 1.2 - заходим и тестируем!

14

Re: комментарии конфликтуют со слайд шоу

ААА так это те же лайт -боксы .....
это же не слайд шоу а модальные окна.

Могу "карусель" подкинуть каму нада ...

В Аттаче облегченная версия прототип (версия 1.6.0.3 , 73 Кило)

Отредактировано YurySpoloh (02 Mar 2010 21:16:38)

Post's attachments

prototype-mini.js 73.53 kb, 130 downloads since 2010-03-02 

Re: комментарии конфликтуют со слайд шоу

там  и слайд шоу есть )) хоть и окно...

Здесь молодость бродит крылато, и старость не клонит голов...
Демо площадка Strawberry 1.2 - заходим и тестируем!

Re: комментарии конфликтуют со слайд шоу

Miksar пишет:

ммм... так и заставили искать, ща скажу...

2 минуты и 16 секунд спустя:

http://www.dolem.com/lytebox/ - во ))
Прекрасно работает! Сам ставил заказчику.

Скачать последний прототип: http://www.prototypejs.org/

почти то что нужно ) tongue а архивчик не остался где это слайд шоу работает на в окне lytebox а просто на странице?

Strawberry 1.1.1

Re: комментарии конфликтуют со слайд шоу

я в окне ставил, ибо если ты смотришь слайд шоу - то ты его смотришь...

Здесь молодость бродит крылато, и старость не клонит голов...
Демо площадка Strawberry 1.2 - заходим и тестируем!