2016-11-06 2 views
2

Я пытался настроить переадресацию для диапазона Ecwid URLs начиная с/магазин/магазин #!/~/Привести к/магазин #!/~/КорзинаJS Ecwid URL перенаправления

У меня есть придумать с этим кодом:

var wrong_url = ['http://example.com/shop','http://example.com/shop#','http://example.com/shop#!','http://example.com/shop#!/','http://example.com/shop#!/~','http://example.com/shop#!/~/']; 
 
var current_url = document.URL; 
 
for (i=0;i<wrong_url.length;i++) { 
 
    if (current_url==wrong_url[i]) { 
 
    document.location.replace('http://example.com/shop#!/~/cart'); 
 
    break; 
 
      } 
 
}

Он работает хорошо, но есть проблема. Когда я нахожусь в/shop #!/~/Cart, а затем вручную меняю URL-адрес, скажем,/shop #!/~ /, Он не будет перенаправлен до обновления страницы. Я считаю, что это имеет какое-то отношение к ajax-поведению корзины ecwid, но не может понять, как бороться с ней.

Нужна помощь?

ответ

1

Vitaly из Ecwid здесь.

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

Поэтому вам необходимо создать обработчик для таких ситуаций отдельно. Например, вы можете сделать это следующим образом:

<script> 
var wrong_url = ['http://example.com/shop','http://example.com/shop#','http://example.com/shop#!','http://example.com/shop#!/','http://example.com/shop#!/~','http://example.com/shop#!/~/']; 
var current_url = document.URL; 

// function to check current URL and make a redirect 
function checkUrl(){ 
    for (i=0;i<wrong_url.length;i++) { 
     if (current_url==wrong_url[i]) { 
     document.location.replace('http://example.com/shop#!/~/cart'); 
     break; 
      } 
    } 
} 

// Execute checkUrl() function each time URL is changed 
$(window).bind('hashchange', function() { 
    checkUrl(); 
}); 

// Execute checkUrl() function on initial page load 
checkUrl(); 
</script> 
+0

, который отлично работает, спасибо! – tonydoe

Смежные вопросы