Междоменный JavaScript, настройка родительского местоположения в случае встраивания - PullRequest
2 голосов
/ 20 июля 2009

Существует решение под названием «Fragment Id Messaging», позволяющее решить междоменную связь путем установки parent.location с дополнительными текстами, за которыми следует «#» из дочернего iframe, это работает. Тем не менее, если родительский элемент встроен в виде iframe на другой странице, настройка parent.location будет запрещена браузерами ... Это правда? Если да, есть ли обходной путь?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 20 июля 2009

Современные браузеры, которые поддерживают API postMessage, имеют повышенную безопасность, которая блокирует этот вид внутрикадрового взаимодействия. В браузерах, у которых нет такой поддержки, техника, которую вы используете, должна быть в порядке. Единственным исключением является Safari 3.2, не поддерживающий HTML 5 postMessage API и не позволяющий вам устанавливать parent.location при определенных обстоятельствах.

Другой недостаток заключается в том, что, хотя IE8 реализовал API postMessage, он (несколько предсказуемо) сделал это не так, как все остальные браузеры (FF3 +, Chrome, Safari 4+ и Opera 9.64+). В IE8 postMessage связь между всплывающим окном и его открывателем недопустима, что означает, что вам нужно использовать дополнительный iframe для IE8, который не требуется ни для какого другого браузера.

Конечный результат заключается в том, что для реализации связи между страницей и всплывающим окном в удаленном домене вам потребуется одна ветвь для достойных современных браузеров, одна для старых браузеров и отдельная каждая для IE8 IE7 и IE6. Спасибо Microsoft ...

祝 你 好運:)

1 голос
/ 20 июля 2009

В каких браузерах вы столкнулись с проблемой, и какое именно сообщение об ошибке вы видите?

Как правило, FIM должен работать правильно даже в описанном вами сценарии, и многие крупные веб-сайты используют его.

FIM следует использовать только в том случае, если HTML5 postMessage API (поддерживаемый IE8, FF3, Chrome и Opera 10) недоступен, поскольку postMessage более безопасен и более надежен.

...