Я делаю довольно ужасные вещи с JavaScript, и у меня возникла странная проблема.
Я создаю двоичные данные, которые заполняют буфер статического размера.Если содержимое не заполняет буфер, остаток заполняется нулевыми символами.
Следующим шагом является преобразование в base64.
Размер (в байтах) не всегда кратениз 3, так что мне может понадобиться добавить отступ до конца.Последние байты в буфере всегда равны нулю (фактически, это около килобайта нулей).
Когда я конвертирую это в base64 в Firefox и Chrome, я получаю ERR_INVALID_URL
, когда у меня есть трейлинг '=', но скачивается нормально, когда нет.
Например:
var url = "data:application/octet-stream;base64,";
window.open(url + "AAAA"); // works
window.open(url + "AAAA="); // doesn't work
window.open(url + "icw="); // works
Мои файлы работают, но они не соответствуют спецификации.
Есть ли причина, по которой это недопустимое base64? Что более важно, это ошибка или часть спецификации?
Редактировать:
Я опубликовал ответ, который даетнекоторые странности между Firefox и Chrome.Кто-нибудь знает, что указывает стандарт?Или это одна из тех слабых спецификаций, которая вызывает фрагментацию?Я хотел бы что-то определенное, если это возможно.