URI-кодированный хэштег внутри URL, автоматически декодируемый через PushState - PullRequest
3 голосов
/ 13 марта 2012

Я пытаюсь выдвинуть URL с хэштегом в кодировке URL (я создаю клиент Twitter).History.js, по-видимому, рассматривает хэштеги в кодировке URI (% 23) в качестве параметров хеширования в URL, поэтому URL автоматически декодирует их, следовательно, не вызывает изменения состояния с такими ссылками.

Например, конвертируется url / first /% 23secondas / first / # second

Что я могу сделать, не испортив весь плагин?

1 Ответ

6 голосов
/ 05 апреля 2012

Если вы храните файл 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)

...