Каким-то образом window.location.hash обрабатывается по-разному в разных браузерах. Если у меня есть URL-адрес следующим образом
http://maps-demo.bytecraft.com.my/postdemo/parcel
#parcel/history/1?as=json&desc[]=ctime&desc[]=history_id
и я заинтересован в получении значений между # parcel / history / и? As = json ... поэтому оператор подстроки будет чем-то похожим на
window.location.hash.substring(14, window.location.hash.search(/\?/g));
У меня есть такая работа в Firefox 3.0.10 без проблем, но тот же оператор подстроки не работает в Opera 9.60.
После быстрого поиска я нашел интересную информацию, которая может помочь
- window.location.hash всегда должен возвращать строку в кодировке urlencoded, но это ошибка в Firefox
Если хеш-часть URL-адреса содержит закодированные символы (см. Core_JavaScript_1.5_Reference: Global_Functions: encodeURIComponent), хеш-функция возвращает декодированную часть URL-адреса. Это ошибка в Firefox. href, search и pathname возвращают правильные, закодированные части URL.
- Opera возвращает только # parcel / history / 1 и игнорирует оставшуюся строку, и это главная причина, по которой мой оператор подстроки не удался ...
Есть ли лучший способ, если я хочу извлечь строку между # parcel / history / и? As = json .... помимо регулярного выражения?!