К сожалению, это ошибка в Firefox, так как она декодирует location.hash
дополнительное время, когда к ней обращаются. Например, попробуйте это в Firefox:
location.hash = "#%30";
location.hash === "#0"; // This is wrong, it should be "#%30"
Единственное кросс-браузерное решение - просто использовать (location.href.split("#")[1] || "")
вместо получения хеша. Настройка хэша с помощью location.hash
, похоже, работает правильно для всех браузеров, которые поддерживают location.hash
.