2017-02-10 29 views
19

Do celów testowych chcę wypełnić historię wieloma wpisami. Dokładniej, chcę dodać elementy X, aby wyłączyć rodzaj przeglądarki, ponieważ nawet jeśli użytkownik kliknie X razy, pozostanie na tej samej stronie.Interfejs API historii HTML5 na Chrome iOS

robię to w następujący sposób:

(function(){ 
    for (var x = 0; x < 10; x++) { 
    history.pushState(null, document.title, location.pathname);  
    }   
}()); 

Więc gdy strona jest ładowany 10 elementów bieżącej strony są wstrzykiwane do historii. To podejście działa we wszystkich przeglądarkach obsługujących interfejs API historii z wyjątkiem Chrome na iOS !!!

Stosując powyższy kod, Chrome na iOS (7 do 10) ma kilka naprawdę dziwnych rzeczy:

  • Zastępuje tytuł w zakładce z adresem URL bieżącej strony (tak, zamiast pokazywać „my świetna strona "w tytule karty pokazuje" mygreatpage.com/samplepage1 "
  • długo naciskając przycisk Wstecz, aby sprawdzić wpisy, Chrome nie zawiera żadnych dodatkowych dodanych wpisów - każda inna przeglądarka pokazuje 10 dodatkowych wpisów zgodnie z zamierzeniem podanym powyżej.

Safari i co iOS i przeglądarka robią to, co chcę. Co robię źle?

+0

Może to pomóc: https://bugs.chromium.org/p/chromium/issues/detail?id=394296 –

+1

Przydałaby się znajomość wersji Chrome testowanej przeciwko – lunohodov

+0

zawsze najnowszej stabilnej oczywiście –

Odpowiedz

1

dla Chrome na iOS rodzimej history.pushState jest overidded przez dodatkowe rozszerzenia, jeśli alert(history.pushState) widać to nie jest natywny kod, jak widzimy na innych przeglądarkach

patrz niżej polyfills może pomóc,

  1. HTML5-History-API

  2. history.js

+0

co masz na myśli "dodatkowe rozszerzenie"? –

+0

Chrome ios zastępuje funkcję history.pushState, może to nie być kod z "dodatkowego rozszerzenia", ale z tego powodu otrzymujemy wyżej wymieniony błąd w chrome ios. – ShilpeshAgre