Backbone: url рдореЗрдВ рдПрдХ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдиреЗрд╡рд┐рдЧреЗрдЯ () рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ {trigger:false} рд╣реЛрдиреЗ рдкрд░ рднреА рдорд╛рд░реНрдЧ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдирд╡ре░ 2014  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jashkenas/backbone

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

$(function(){
var AppRouter = Backbone.Router.extend({

    routes: {
        '(count/:count)': 'home',
    },

    home: function(currCount) {
        var counter = 0;
        var thisObj = this;

        $("body").html($("<p>Click me</p>").on('click', function() {
            console.log("clicked "+counter);
            counter++;
            thisObj.navigate('count/'+counter, {trigger:false, replace: true});
        }));

        console.log('home route: '+currCount);    
    },
});

window.app = new AppRouter();
Backbone.history.start();
});

рдЗрд╕реЗ "рд╣реЛрдо рд░реВрдЯ: рдирд▓" рд▓реЙрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлрд┐рд░ "рдХреНрд▓рд┐рдХ рдореА" рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд┐рдХ рдХреЗ рд▓рд┐рдП "рдХреНрд▓рд┐рдХ #" рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдм, рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕рдВрд╢реЛрдзрди рдХрд░реЗрдВред рдиреЗрд╡рд┐рдЧреЗрдЯ рдореЗрдВ url рдореЗрдВ рдПрдХ рд╕реНрдерд╛рди рдЬреЛрдбрд╝реЗрдВ ():

thisObj.navigate('count/ '+counter, {trigger:false, replace: true});

рдкреБрди: рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ "рд╣реЛрдо рд░реВрдЯ: #" рднреА рд▓реЙрдЧ рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░рддреНрдпреЗрдХ рддреАрди рдХреНрд▓рд┐рдХреЛрдВ рдореЗрдВ рд╕реЗ _рджреЛ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░ рджреЗрдЧрд╛ред

рдпрд╣ 1.1.2 рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╣реИ рдФрд░ рдореИрдВ рдирд╡реАрдирддрдо рдлрд╛рдпрд░рдлреЙрдХреНрд╕ 33.1 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдХреНрд░реЛрдо рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдЖ рд░рд╣реА рд╣реИ - рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреНрд░реЛрдо рд╢рд╛рдпрдж рдпреВрдЖрд░рдПрд▓ рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдПрдиреНрдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЪрд░рд┐рддреНрд░ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдпреВрдЖрд░рдПрд▓ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдЬреАрдм рд╣реИ рдФрд░ рдХрдо рд╕реЗ рдХрдо рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред (рдЕрд░реНрдерд╛рдд "рдиреЗрд╡рд┐рдЧреЗрдЯ () рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╡рд╛рд▓реЗ URL (рдпрд╛ рдЕрдиреНрдп рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд░реНрдг ??) рдХреЗ рд╕рд╛рде рдЕрдкреЗрдХреНрд╖рд╛рдиреБрд╕рд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред))

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЖрд╕рд╛рди рдлрд┐рдХреНрд╕ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рдмрдЧ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдХреЗ рдореИрдВ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЗрд╕реЗ рд╢рд┐рдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реВрдВред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдЬреЛ рдЦреЛрдЬрд╛ рд╣реИред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ, рдпрджрд┐ рдЖрдк "this.location.href" рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдЪреЗрдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕ рдХреЛ% 20 рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрд░реЛрдо (рдФрд░ рд╕рдВрднрд╡рддрдГ рдЖрдИрдИ) рдЙрдиреНрд╣реЗрдВ рд╕рдлреЗрдж рдЬрдЧрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдмреИрдХрдмреЛрди рдореЗрдВ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЖрдк рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ "checkUrl ()" "this.fragment" рдХреА рддреБрд▓рдирд╛ "this.getFragment ()" рдХреЗ рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рди рдХреЗ рд╡рд┐рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ "this. loadUrl ()", рдЕрдЧрд░ рд╡реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗред this.getFragment() рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ (рдпрд╛ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдПрдиреНрдХреЛрдбрд┐рдВрдЧ) рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рди рдХреЗ рд╕реНрдерд╛рди рдкрд░% 20 рдХреЗ рд╕рд╛рде, this.location.href рдХрд╛ рдорд╛рди рджреЗрддрд╛ рд╣реИред this.fragment рдПрдХ рдбреАрдХреЛрдбреЗрдб рд╕рдордХрдХреНрд╖ рджреЗрддрд╛ рд╣реИред рдпрд╣.рдлреНрд░реИрдЧрдореЗрдВрдЯ рдбреАрдХреЛрдбреЗрдб рд░рд╣рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдк рдЕрдкрдиреЗ рдпреВрдЖрд░рдПрд▓ рдкрд░ рдПрдиреНрдХреЛрдбреБрд░реА () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╛ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ "рдиреЗрд╡рд┐рдЧреЗрдЯ ()" рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдпрд╣ред рдлреНрд░реИрдЧрдореЗрдВрдЯ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдпреВрдЖрд░рдПрд▓ рдкрд░ "this.decodeFragment ()" рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрдВ, рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдпрд╛рд╕ рдХреЛ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ this.fragment рд╣рдореЗрд╢рд╛ this.decodeFragment() рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдбрд┐рдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ URL рд╣реЛрддрд╛ рд╣реИ, рдФрд░ URL рдореЗрдВ рдХреЛрдИ рднреА рд╡рд░реНрдг рд╣реЛрддрд╛ рд╣реИ рдЬреЛ encodeURI() рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди), рдпрд╣ рдХрднреА рднреА рдЗрд╕рдХреЗ рджрд┐рдП рдЧрдП рдорд╛рди рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рдПрдЧрд╛ред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ .getFragment(), рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ this.location.href рдХреЗ рдорд╛рди рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдпреЗ рджреЛ рдорд╛рди рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ, рдЗрд╕рд▓рд┐рдП рдпрд╣.loadUrl() checkUrl() рдореЗрдВ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд░рд╛рдЙрдЯрд░ рдореЗрдВ рдЯреНрд░рд┐рдЧрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд╣реА рд╣реИ рдпрд╛ рдЧрд▓рддред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реБрдзрд╛рд░ (рдкреВрд░реНрд╡-рд╡рд┐рд╕реНрддреГрдд рдкрд░реАрдХреНрд╖рдг) рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП "getHash ()" рд╡рд┐рдзрд┐ рдХреЗ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛:

return match ? this.decodeFragment(match[1].replace(pathStripper, '')) : '';

рд╕рднреА 8 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рд╛рдп @chaimpeck! рдЗрд╕рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ред рдореИрдВрдиреЗ рдорд╛рд╕реНрдЯрд░ рд╢рд╛рдЦрд╛ рдФрд░ 1.1.2 рд░рд┐рд▓реАрдЬ рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдирд╡реАрдирддрдо рдХреНрд░реЛрдо рдФрд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдХреНрдпрд╛ рдЖрдк рдПрдХ рдЧрд┐рд╕реНрдЯ/рдмрд┐рди/рдлрд┐рдбрд▓ рдореЗрдВ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдЙрджрд╛рд╣рд░рдг рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдЬрд┐рд╕реЗ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ?

рд╣рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдгреЛрдВ рдХреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ/рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЖрдИ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдФрд░ рднреА рдХреБрдЫ рд╣реИрдВред :рд╕реНрдорд╛рдЗрд▓реА:

рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рджреЗрдЦреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдирд╛ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВред рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдХрд╛ рдирдХрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЖрдИрдИ рдФрд░ рдХреНрд░реЛрдо рдХреЗ рд╕рднреА рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ v31.5.0 рдкрд░ (рдордд рдкреВрдЫреЛ, рдореБрдЭреЗ рдЙрд╕ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рд╕реЗ рдирдлрд░рдд рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╣рдо рдлрдВрд╕ рдЧрдП рд╣реИрдВ), рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЯреНрд░рд┐рдЧрд░ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЬреЛрдбрд╝реЗ рдмрд┐рдирд╛ рднреА рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдЬреЛ рдЦреЛрдЬрд╛ рд╣реИред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ, рдпрджрд┐ рдЖрдк "this.location.href" рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдЪреЗрдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕ рдХреЛ% 20 рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреНрд░реЛрдо (рдФрд░ рд╕рдВрднрд╡рддрдГ рдЖрдИрдИ) рдЙрдиреНрд╣реЗрдВ рд╕рдлреЗрдж рдЬрдЧрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдмреИрдХрдмреЛрди рдореЗрдВ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЖрдк рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ "checkUrl ()" "this.fragment" рдХреА рддреБрд▓рдирд╛ "this.getFragment ()" рдХреЗ рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рди рдХреЗ рд╡рд┐рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ "this. loadUrl ()", рдЕрдЧрд░ рд╡реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗред this.getFragment() рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ (рдпрд╛ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдПрдиреНрдХреЛрдбрд┐рдВрдЧ) рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рди рдХреЗ рд╕реНрдерд╛рди рдкрд░% 20 рдХреЗ рд╕рд╛рде, this.location.href рдХрд╛ рдорд╛рди рджреЗрддрд╛ рд╣реИред this.fragment рдПрдХ рдбреАрдХреЛрдбреЗрдб рд╕рдордХрдХреНрд╖ рджреЗрддрд╛ рд╣реИред рдпрд╣.рдлреНрд░реИрдЧрдореЗрдВрдЯ рдбреАрдХреЛрдбреЗрдб рд░рд╣рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдк рдЕрдкрдиреЗ рдпреВрдЖрд░рдПрд▓ рдкрд░ рдПрдиреНрдХреЛрдбреБрд░реА () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╛ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ "рдиреЗрд╡рд┐рдЧреЗрдЯ ()" рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдпрд╣ред рдлреНрд░реИрдЧрдореЗрдВрдЯ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдпреВрдЖрд░рдПрд▓ рдкрд░ "this.decodeFragment ()" рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрдВ, рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдпрд╛рд╕ рдХреЛ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ this.fragment рд╣рдореЗрд╢рд╛ this.decodeFragment() рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдбрд┐рдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ URL рд╣реЛрддрд╛ рд╣реИ, рдФрд░ URL рдореЗрдВ рдХреЛрдИ рднреА рд╡рд░реНрдг рд╣реЛрддрд╛ рд╣реИ рдЬреЛ encodeURI() рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди), рдпрд╣ рдХрднреА рднреА рдЗрд╕рдХреЗ рджрд┐рдП рдЧрдП рдорд╛рди рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рдПрдЧрд╛ред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ .getFragment(), рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ this.location.href рдХреЗ рдорд╛рди рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдпреЗ рджреЛ рдорд╛рди рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ, рдЗрд╕рд▓рд┐рдП рдпрд╣.loadUrl() checkUrl() рдореЗрдВ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд░рд╛рдЙрдЯрд░ рдореЗрдВ рдЯреНрд░рд┐рдЧрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рд╣реА рд╣реИ рдпрд╛ рдЧрд▓рддред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реБрдзрд╛рд░ (рдкреВрд░реНрд╡-рд╡рд┐рд╕реНрддреГрдд рдкрд░реАрдХреНрд╖рдг) рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП "getHash ()" рд╡рд┐рдзрд┐ рдХреЗ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛:

return match ? this.decodeFragment(match[1].replace(pathStripper, '')) : '';

рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЗрд╕рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдпреВрдЖрд░рдПрд▓ рдореЗрдВ рдЧреИрд░-рдорд╛рдирдХ рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ ├д├╢ (рд╕реНрд╡реАрдбрд┐рд╢ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдореЗрдВ рд╡рд░реНрдг)ред рдХреНрд░реЛрдо рдФрд░ рдмреИрдХрдмреЛрди рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгред

sjmiller85 рдХреЗ рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд┐рдпрд╛ред рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

@ sjmiller85 рдпрд╣рд╛рдБ рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рдерд╛? рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ 'рдкрд╛рдерд╕реНрдЯреНрд░рд┐рдкрд░' рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдпрд╣ рд░реЗрдЧреЗрдХреНрд╕ рд╣реИ?
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдпрд╣ рдореЗрд░реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рджреЗрдЦреЗрдВ https://github.com/jashkenas/backbone/pull/3955/files
getHash: function (t) { var e = (t || this).location.href.match(/#(.*)$/); return e ? e[1] : "" }

@Aggror рдкрдерд╕реНрдЯреНрд░рд┐рдкрд░, рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╣реИрд╢ рдХреЗ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреИрд╢реНрдб рд░реЗрдЧреЗрдХреНрд╕ рд╣реИред

// Cached regex for stripping urls of hash.
var pathStripper = /#.*$/;

рддреЛ рдпрд╣ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдХреЗрд╡рд▓ рдЕрдзрд┐рдХ рд╕рд╛рдл рдФрд░ рдХреБрд╢рд▓ :)

рдЕрдкрдиреЗ рд░рд╛рдЙрдЯрд░ рдореЗрдВ рдПрдХ рд╕рд╛рде рдПрдХ рд╣реА рд╣реИрд╢ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдмрдЪреЗрдВ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдХрд╛ рднреА рдзреНрдпрд╛рди рд░рдЦреЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдХреЛрдб рджрд┐рдЦрд╛рдКрдВрдЧрд╛
(рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП) (рдПрдХ рд╕рд╛рде рд╕рдорд╛рди рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП)
рдЕрдЧрд░ (рдорд╛рд░реНрдЧред рд▓рдВрдмрд╛рдИ === 1 || рдорд╛рд░реНрдЧ [рдорд╛рд░реНрдЧред рд▓рдВрдмрд╛рдИ -1] === getHash ()) {
рд╡рд┐рд╡рд░рдг рдЭреВрдард╛ рд╣реИ;
}
рдЕрдиреНрдп{
рдорд╛рд░реНрдЧред рдкреБрд╢ (getHash ())
};

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

tribalvibes picture tribalvibes  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cueedee picture cueedee  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gfranko picture gfranko  ┬╖  18рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alundiak picture alundiak  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

g00fy- picture g00fy-  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ