2015-07-21 18 views
12

ho il prossimo numero, ho pagina che si apre con l'Ajax e cambiare dinamicamente l'URL del browser come questorotaie cambiamento ajax URL

window.history.pushState(null, null, "/desktop/manage/add"); 

così quando io sono nella pagina "aggiungi" e aprire qualsiasi pagina con ottenere/inviare richiesta (anche un altro sito web) e premere il pulsante "Torna indietro" nel browser Non ottengo il codice html completo della pagina ma solo la parte ajax. Come questo: pic

Come questo può essere risolto?

P.S Se cancello window.history.pushState (null, null, "/ desktop/manage/add"); tutto funziona bene, ma ho bisogno di cambiare l'URL del browser.

UPD: apro questa pagina tramite richiesta POST, NO ajax enter image description here

Poi apro "gestire/add" pagina tramite AJAX enter image description here

Poi vai a google.com (qualsiasi sito) e fare clic di nuovo il tasto enter image description here

e il mio ajax caricato pagina non la pagina HTML completo, v'è solo una parte ajax solo come testo: enter image description here

ho letto su questo problema, e ussually rotaie programmatori aggiungono evento per eseguire fare clic sul pulsante per application.js in questo modo:

$(window).on('popstate', function() { 
    $.get(document.location.href) 
    }); 

Ma questo funziona solo utente non è andare su Google (o qualsiasi altro sito) , funziona solo se passa attraverso il mio sito e fa clic sul pulsante indietro.

UPD2: /ADD regolatore

def addProduct 

@categories = Market.where("depth = ? and title != ''", 0).reorder(:title); 
     @tags = UserTag.where(user_id: current_user.id).includes(:tags); 
     respond_to do |format| 
      format.html{render layout: "desktop_layout"} 
      format.js {} 
     end 
    end 

ecco la mia addProduct.js: (questo file reso che vedete nella schermata dopo di nuovo il tasto cliccato)

window.history.pushState('page212', 'Mikee.kz', '/desktop/manage/add'); 
    $("#rightBlock").html("<%= escape_javascript(ajax_section id:'page', :render => 'myadd') %>"); 
+0

È possibile modificare la domanda per includere l'output dal registro quando si passa da una pagina all'altra? –

+0

@JamesSmith, non c'è alcun registro dopo che ho fatto clic sul pulsante Indietro ( – mondayguy

+0

Ah, rightState non fa caricare nulla. Https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history. È/desktop/gestisci/aggiungi una pagina che l'utente avrebbe visitato in precedenza? –

risposta

3

Ho avuto lo stesso problema un po 'di tempo fa, tuttavia con replaceState() invece. All'inizio non me ne accorsi, ma il mio collega lo ha chiamato alla mia attenzione. Si è scoperto che non me ne ero accorto perché stavo usando Firefox e questo sembra essere un bug esclusivo di Chrome/Chromium, che stava usando. In effetti, sembra essere stato un bug per a while now, ma Google non ha ancora risolto il problema.

Detto questo, sembra che non ci sia una vera soluzione per questo, almeno fino a quando Google non lo risolve. Ovviamente, semplicemente ricaricando la pagina, il problema sparirà per il momento, ma continuerai a vedere il brutto codice. E non puoi semplicemente usare Chrome/Chromium, ma non è nemmeno una soluzione.

Problemi correlati