2011-08-25 13 views
6

El plugin jQuery HISTORY.js (https://github.com/browserstate/History.js/) proporciona una característica de implementación push de historial HTML5 y, en el caso de un navegador no compatible, debe ser capaz de implementar una característica de etiqueta HTML4. El archivo de documentación/README detalla el uso como tal:Implementando History.js HTML4 Fallback

var History = window.History; // Note: We are using a capital H instead of a lower h 
    if (!History.enabled) { 
     // History.js is disabled for this browser. 
     // This is because we can optionally choose to support HTML4 browsers or not. 
     return false; 
    } 

Como se puede ver, la documentación explica el uso del plugin HISTORY.js hasta el punto de HTML5 y no explica el uso del soporte de HTML 4.

Sin embargo, en la sección "Descarga & de instalación" de la documentación, se lee:

5. Include History.js 
<script src="http://www.yourwebsite.com/history.js/scripts/compressed/history.js">/script> 
<script src="http://www.yourwebsite.com/history.js/scripts/compressed/history.html4.js"></script> 

Estas instrucciones pueden transmitir que el soporte HTML 4 hashtag es automática, sino que las instrucciones de la página de uso sugieren que debe ser implementado manualmente; que creo que es realmente el caso.

No puedo encontrar más documentación sobre la implementación de la función de hashtag HTML4. Por favor, ayúdame a resolver esto.

+0

La forma en que tiene este escrito, es probable que estar cerrado. Explique qué ha intentado y proporcione ejemplos explícitos de lo que no funciona y dónde necesita ayuda. De lo contrario, lea la documentación de la herramienta y busque un foro para una discusión más general. [Consulte "¿Qué tipo de preguntas no debería hacer aquí?"] (Http://stackoverflow.com/faq#dontask) – OverZealous

+0

Ok, lo siento. Gracias por decirme lo que hice mal. Solo pensé que si escribía demasiada gente no lo leería. Editaré la publicación para seguir explicando. –

+0

¿Lo has probado? Parece que el complemento se degradaría automáticamente (funcionaría con HTML4 sin implementación adicional). – JJJ

Respuesta

1

Bien, tal vez el problema fue que no estaba usando History.js de la manera correcta (ese es el problema que también tuve). Básicamente utilizar History.js de la manera correcta que debe hacer algo como:

// Register navigation click handlers where you will load Ajax content 
$(window).on('click', 'a.ai1ec-load-view', handle_click_on_link_to_load_view); 
// Bind to the statechange event 
$(window).bind('statechange', handle_state_change); 

// When the state changes, load the corresponding view 
var handle_state_change = function(e) { 
    var state = History.getState(); 
    load_view(state.url, 'json'); 
}; 

// When clicking on a link you want to load, trigger statechange by changing state 
var handle_click_on_link_to_load_view = function(e) { 
    e.preventDefault(); 
    History.pushState({ target :this }, null, $(this).attr('href')); 
}; 

Antes de hacer esto yo no estaba escuchando a statechange y yo estaba simplemente usando pushState() en el controlador de enlace de clic.

Si lo hace así que no hay necesidad de codificar un repliegue, que funcionará también en los navegadores HTML4 (y marcadores de los navegadores HTML4 funcionará como se esperaba)