2013-08-02 11 views
5

Bootstrap 2.3.2Włącz Wstecz Postępowanie z Twitter Bootstrap Tabs w IE8 +

Używam tabs z Bootstrap w moim projekcie, aby wyświetlić zawartość. Na jednej stronie znajduje się wiele zakładek z różnymi treściami, a na tych kartach znajdują się linki do przeniesienia użytkownika na inne strony w witrynie.

Niestety domyślnie karty nie obsługują nawigacji przycisku wstecz, więc jeśli użytkownik odwiedza inną stronę i uderza w przycisk Wstecz, karta powróci do pierwszej otwartej karty, a nie tej, która była aktywna, gdy ostatni raz przeglądali stronę.

Poniższy skrypt Javascript z François Zaninotto rozwiązuje ten problem w przeglądarce Chrome, Firefox i Safari. François mówi również, że działa na IE8 + - ale podczas moich testów nie mogę uruchomić go do pracy na IE8, IE9 lub IE10. Czy ktoś wie, jak to działa w IE8 +? Czy to możliwe?

$(document).ready(function() { 
    // add a hash to the URL when the user clicks on a tab 
    $('a[data-toggle="tab"]').on('click', function(e) { 
    history.pushState(null, null, $(this).attr('href')); 
    }); 
    // navigate to a tab when the history changes 
    window.addEventListener("popstate", function(e) { 
    var activeTab = $('[href=' + location.hash + ']'); 
    if (activeTab.length) { 
     activeTab.tab('show'); 
    } else { 
     $('.nav-pills a:first').tab('show'); 
    } 
    }); 
}); 

`

<ul id="myTab" class="nav nav-pills"> 
       <li class="active"><a href="#tab1" data-toggle="tab">Tab1</a></li> 
       <li><a href="#tab2" data-toggle="tab">Tab2</a></li> 
     <li><a href="#tab3" data-toggle="tab">Tab3</a></li> 

      </ul> 

<div id="myTabContent" class="tab-content"> 
       <div class="tab-pane active" id="tab1"> 
        <h2>Tab 1</h2> 
       <p>Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.</p> 
       </div> 
       <div class="tab-pane" id="tab2"> 
        <h2>Tab 2</h2> 
       <p>Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.</p> 
       </div> 
       <div class="tab-pane" id="tab3"> 
        <h2>Tab 3</h2> 
       <p>Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.</p> 
       </div> 
      </div> 
+0

Opcja 'history.pushState' jest HTML5, który nie jest obsługiwany w IE8 . 'popstate' jest obsługiwane tylko w IE10. – putvande

+0

@putvande Nie jestem pewien, jak to zaimplementować, ale czy powinienem użyć [history.js] (https://github.com/browserstate/history.js/)? Czy to dla mnie zadziała? – Metzed

Odpowiedz

1

Próbowałem wiele razy, aby mój kod powyższej pracy, ale musiałam zrezygnować i zamiast I wdrożone następujące javascript które przepracowanych: https://gist.github.com/josheinstein/5586469

+1

Oto moja podstawa, aby sprawić, by działało przez ie8 i Chrome: https://gist.github.com/bengm/7535223 –

1

Moja implementacja nie jest prawdopodobnie najbardziej skutecznym sposobem rozwiązania problemu więc proszę czekać na innych odpowiedzi.

Persist javascript variables across pages?

sesje użyć JavaScript do przechowywania unikalny numer karty, a obecnie używać do ID.

tabHistory = "tab" + currentTab; 

Po powrocie do poprzedniej strony po prostu połącz użytkownika z tabHistory.

Nie mam zbyt dużego doświadczenia z tą techniką, ale użyłem jej tylko raz, jednak powinna ona być szybka i łatwa do wdrożenia, a także dość wydajna.

Z tego, co zebraliśmy, nie zadziała, jeśli otwarte zostanie nowe okno/karta, ale przycisk powrotu również nie będzie miał znaczenia.