URI кодиран хаштаг в url автоматично декодиран чрез PushState

Опитвам се да прокарам URL адрес с кодиран хаштаг в url (създавам клиент на Twitter). History.js очевидно разглежда URI кодирани хаштагове (%23) като хеш параметри в URL адреса, така че автоматично URL ги декодира, следователно не предизвиква промяна на състоянието с такива връзки.

Например URL адресът /first/%23second се преобразува като /first/#second

Какво мога да направя, без да объркам целия плъгин?


person gwendall    schedule 13.03.2012    source източник


Отговори (1)


Ако хоствате файла History.js локално, потърсете функция на m обекта, наречена "unescapeString" (или просто Ctrl+F до "m.unescapeString".

След това можете да го промените на това:

m.unescapeString=function(b){
    var c=b,d;

    if(!history.pushState){  //Adding this check.
        for(;;) {
            d = a.unescape(c);

            if (d===c) 
                break;

            c = d;
        }
    }
return c
}

Това основно ще реши проблема ви. (Вярвам, че този метод се използва за поддръжка на браузъри, които не поддържат history.pushState)

person David Posey    schedule 04.04.2012