2012-03-30 3 views
0

Je regardais le plugin jQuery bbq, et je n'ai trouvé aucune mention de document.hash n'importe où dans son code.jQuery bbq ... où est le grill?

Je suppose que le hachage est obtenais à la ligne 1094:

function get_fragment(url) { 
    url = url || location.href; 
    return '#' + url.replace(/^[^#]*#?(.*)$/, '$1'); 
}; 

Et régler le hachage à 818 Mais pourquoi utiliser à la place de location.hash?

également quel est le problème avec this:

jq_bbq.pushState = jq_bbq_pushState = function(params, merge_mode) { 

Ne serait-jq_bbq_pushState = function... suffisant?

Répondre

3

En ce qui concerne votre deuxième point - celui avec location.hash - Je ne peux pas dire à coup sûr, mais les versions antérieures des navigateurs pourraient avoir eu des problèmes avec location.hash.
Mon suppose que est que l'auteur devait s'appuyer sur la propriété hash alors il a implémenté le sien.
Si vous recherchez google pour ie6 location.hash vous n'auriez pas à creuser pour obtenir des informations pour voir qu'il existe de nombreuses plaintes.

+0

En fait, pushState est une nouvelle méthode d'historique du navigateur, qui vous permet de manipuler manuellement l'historique et de stocker l'état du navigateur. https://developer.mozilla.org/fr/DOM/Manipulation_the_browser_history#The_pushState().C2.A0method – Wil

+0

@WilliamGolden Désolé pour la confusion, mais je ne faisais référence qu'au deuxième point de la question; celui avec 'location.hash'. Voir mise à jour. –

1

document.hash n'existe pas, vous pouvez accéder au hachage par document.location.hash. La fonction get_fragment semble faire la même chose. Je suppose que l'auteur a utilisé une fonction personnalisée car il ne connaissait pas document.location.hash.

jq_bbq.pushState = jq_bbq_pushState = function(params, merge_mode) { 

Cela ajoute la fonction à l'espace de noms jq_bbq/objet et permet également référencer avec la jq_bbq_pushState variable locale.

+0

'jq_bbq.pushState' son mondial et son local? Ben def connaissait aussi 'location.hash' – qwertymk

+0

Ce n'est pas global, à moins que bbq ne soit une référence à la fenêtre, mais je ne le pense pas. (Je déduis juste ceci du code, je ne connais pas le cadre) Cela peut être le résultat de vouloir exposer une fonction privée à travers l'espace de noms jq_bbq. –