Закодированный 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