Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Скрипт работает через раз (https://javascript.ru/forum/jquery/20652-skript-rabotaet-cherez-raz.html)

Drus 12.08.2011 14:40

Скрипт работает через раз
 
Все банально: есть скрипт на сайте, который при заходе делает следующее проверят наличие хеша в ссылке, если таковой есть - выдает новую страницу, заменяя старую, если нет - оставляет текущую.
Вне зависимости от хеша происходит поиск пункта меню с урелом как у текущей страницы и блик(подсветка активного пункта меню) заезжает под его название.

Проблема - работает через раз, в частности после перехода с Гугла. Наиболее часто происходит в Осле. помогите пожалуйста, мозг уже сломал себе.

сайт __infleur.ru

сам скрипт:

$(document).ready(function(){
    
    // Осел 6 идет - нах
    if ($.browser.msie && $.browser.version.substr(0,1)<7) {
    window.location = "http://infleur.ru/browserversion/ie6.html";
    }
    
    var base = "http://infleur.ru";
    var url = window.location.href;
    var hash = window.location.hash.substr(1);
    var index_of_hash = url.indexOf(hash) || url.length;
    var urel = url.substr(0, index_of_hash);
    var content = $('#content');
    var active = $('.active');
    
    //если есть хеш - даем страницу с переадресацией
    if(hash.length != 0){
  $('.slider').remove(); 
  if(hash.length == 1){
      window.location = "http://infleur.ru"
  } else {
      $('#menu a[href*='+hash.replace(/\//g, '')+']').each(function (){
      getNewPage($(this), content, active, 1);
      setBlur();
      });
  }
    }else {
  $('#menu a').each(function (){
      if (this.href == document.URL) {
    getNewPage($(this), content, active, 1);
    setBlur();
      }
  });
    }
    
    $('#menu a').click(function(event){
  event.preventDefault();
  document.title = $(this).attr('rel')+"Луи Де Флер - премиум-букеты, доставка цветов Екатеринбург, оформление праздников, организация мероприятий";
  urel = $(this).attr('href');
  parent.location.hash = urel;
  getNewPage($(this), content, active);  
  setBlur();
  });
    
    
});

function getNewPage(aClick, content, active, param){
     var offset_click = aClick.offset().left;
     var width_click = aClick.parent().width();
     var width_cur = active.parent().width();
     var offset_cur = active.parent().offset().left;
     var shadowBox = $('#shadow_box');
     
     if(param != 1){
   offset_prev = active.offset().left;
  active.animate({'marginLeft' : (offset_click - offset_cur + (width_click - width_cur)/2) -109}, 900, 'swing');
   var htm = aClick.attr('href');
   if(((offset_click - 500) - offset_prev) > 0){
       shadowBox.css({"display":"block"});
       $('.slider').animate({'marginLeft' : "-=2000px"}, 900,  function() {
        content.after(function(){
      $(this).load(htm+' .slider', function(){
          $('.slider').css('marginLeft', '2000px').animate({'marginLeft' : "-=2000px"}, 600, 'swing', function(){
        shadowBox.css({"display":"none"});
          });
      });
        })
    });
   } else {
       shadowBox.css({"display":"block"});
       $('.slider').animate({'marginLeft' : "+=2000px"}, 900,  function() {
     content.after(function(){
         $(this).load(htm+' .slider', function(){
       $('.slider').css('marginLeft', '-2000px').animate({'marginLeft' : "+=2000px"}, 600, 'swing', function(){
           shadowBox.css({"display":"none"});
       });
         });
     });
       });
   }
     } else {
   offset_prev = active.offset().left;
   active.css({'marginLeft' : (offset_click - offset_cur + (width_click - width_cur)/2) -109});
   var htm = aClick.attr('href');
   content.after(function(){
         $(this).load(htm+' .slider')
     });
     }
}

function setBlur(){
  $('#button').hover(function(){
    $(this).attr('src', '/fileadmin/templ/img/button_h.png');
  }, function(){
    $(this).attr('src', '/fileadmin/templ/img/button_n.png');
  });
}

function setShadowBox(shadowBox){
    shadowBox.css({"display":"block"});
}

function outShadowBox(shadowBox){
    shadowBox.css({"display":"none"});
}


Прошу простить за возможные косяки, первый пост

Drus 15.08.2011 15:00

Ребята, ну хоть мысли по этому поводу подкиньте, почему оно так.

В принципе ответ не требуется, уже устал искать. Вопрос решен самым простым способом - переадресацией с использованием хеша, так нельзя, но работает.

Боря 31.12.2015 00:38

У меня тоже самое с самым простым скриптом alert('Hellow, world') в опере 34.0 . Так что думаю если вам никто не ответил, скорее всего в вашем скрипте нет явной проблемы или ее вообще нет и проблемы в чем то другом, в браузере например.

Deff 31.12.2015 00:49

Drus,
строки 39-40, наверное так :
urel = $(this).attr('href');
parent.location.hash = '#'+urel;

laimas 31.12.2015 03:36

Цитата:

Сообщение от Drus
Проблема - работает через раз, в частности после перехода с Гугла.

Вообще-то хеш сам по себе на сервер не передается.


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