2015-09-23 3 views
1

У меня странная проблема только на iphone и ipad. Я создал следующие функции:проблема pushstate/pop state на IOS - история api/javascript

На сайте электронной торговли, когда пользователь нажимает кнопку «Назад» браузера на странице успешной проверки, я перенаправляю его на домашнюю страницу. Это отлично работает на всех основных браузерах.

Однако, на IOS, прежде чем нажать кнопку назад, страница автоматически перенаправлены на главную страницу (на странице заказ успеха)

У меня есть следующие коды:

(function() { 

var SuccessPage ={ 

    extractDomain:function(url){ 
     var domain; 
     if (url.indexOf("://") > -1) { 
      domain = url.split('/')[2]; 
     } 
     else { 
      domain = url.split('/')[0]; 
     } 
     domain = domain.split(':')[0]; 

     return domain; 
    } 

} 


if(window.location.href.indexOf("checkout/onepage/success") > -1) { 
    history.pushState(null, null, window.location.href); 
    window.addEventListener("popstate", function(e) { 
     window.location.assign("http://"+SuccessPage.extractDomain(window.location.href)) 
    }); 
} 

})(); 

Я пробовал используя набор тайм-аут на поп состояния события .. но не делает сигару :( И я не могу понять, почему IOS не понимая этот код ..

Пожалуйста, помогите

+0

кто угодно пожалуйста? –

+0

Я только что пришел через history.js, стоит ли это реализовать, или это слишком много, для простой задачи, которую я пытаюсь сделать? –

+1

Согласно моим выводам, сафари выпустит всплывающее событие при загрузке страницы. –

ответ

2

получил его за работу:

if(window.location.href.indexOf("checkout/onepage/success") > -1) { 
    if(window.history && history.pushState && history.state !== undefined){ 
     history.pushState(null, null, window.location.href); 
     window.addEventListener("popstate", function(event) { 
      if(navigator.userAgent.match(/(iPod|iPhone|iPad)/)){ 
       if(!page_loaded){ 
        page_loaded = true; 
        return false; 
       }else{ 
        window.location.assign("http://"+SuccessPage.extractDomain(window.location.href)) 
       } 
      }else{ 
       window.location.assign("http://"+SuccessPage.extractDomain(window.location.href)) 
      } 

     },false); 
    } 
} 
Смежные вопросы