Я использую $ postMessage для связи кросс-браузера с родительским окном. Все работает отлично во всех браузерах, кроме Safari. Проблема заключается в использовании document.location.hash Хеш возвращается в Safari как пустой. Так или иначе, это происходит в Сафари.document.location.hash не работает в Safari
function postMessage(msg){
var parent_url = decodeURIComponent(document.location.hash.replace(/^#/, ''));
$.postMessage({ method:'resize', message:msg}, parent_url, parent);
}
Update:
Так родительское окно создает Iframe, который присоединяет «#URL к концу этого. Я использую document.location.hash.replace (/^# /, ''), чтобы захватить этот url для использования в качестве url для postMessage. При тестировании всего этого в Safari V8.0.2 Safari удалял # и ничего после #. Итак, мой родительский знак вернулся.
Решение этого должно заключаться в использовании параметра param = url в конце URL-адреса вместо #. Я не уверен, почему Safari будет удалять # или если это хорошо документированная проблема. Я искал в Интернете, чтобы узнать больше информации.
* Не работает * в каком смысле? Ошибки метания? – Sampson
'window.location.hash', не использовать' document' – epascarello
document.location.hash возвращается в качестве сафари в качестве сафари –