Состояние моей страницы может быть описано объектом JavaScript, который может быть сериализован в JSON. Но я не думаю, что строка JSON подходит для использования в идентификаторе фрагмента из-за, например, пробелов и двойных кавычек.Каков наилучший способ сериализации объекта JavaScript во что-то, что можно использовать в качестве идентификатора фрагмента (url # hash)?
Будет ли кодирование строки JSON в строку base64 разумным, или есть лучший способ? Моя цель - позволить пользователю закладок на странице, а затем, вернувшись к этой закладке, купите код JavaScript window.location.hash
и измените его соответствующим образом.
Могу ли я спросить, почему вы раздеть '=' отступы, а не заменить его?Знаете ли вы, что функция 'atob' способна правильно декодировать строку даже без символов заполнения? – jl6
@ jl6 Заполнение в base64 просто представляет отсутствие символов, потому что каждые 3 символа кодируются в 4 символах base64. В Firefox функция 'btoa' может декодировать ее без нее, хотя я не проверял другие браузеры. Но есть только одна строка в URL-адресе, поэтому заполнение будет происходить только в конце, и любой браузер должен уметь это понять. Если вы хотите убедиться, что он был добавлен обратно до его декодирования, вы добавите в конец слова '4 * Math.ceil (s.length/4) -s.length' = padding. В любом случае причина его отказа в том, что знак равенства используется в строках запроса в URL-адресах. – Pluto