Кросс-домен iframe получит CSS - PullRequest
       29

Кросс-домен iframe получит CSS

0 голосов
/ 15 февраля 2012

У меня есть html-страница с css, мне нужно, чтобы css контролировал содержание iframe на этой странице.У меня есть контроль над страницей в iframe, и следующий код работает, если страница и фрейм являются локальными друг для друга:

<script type="text/javascript">
window.onload = function() {
    if (parent) {
        var oHead = document.getElementsByTagName("head")[0];
        var arrStyleSheets = parent.document.getElementsByTagName("style");
        for (var i = 0; i < arrStyleSheets.length; i++)
        oHead.appendChild(arrStyleSheets[i].cloneNode(true));
    }
}
</script>

Однако не работает, когда страница с iframe и страница iframeнаходится на отдельных доменах.Кто-нибудь знает, как я могу заставить его работать на двух доменах, или есть альтернативное решение?

Заранее спасибо:)


, так как это моя страница, котораяотображается в iframe, я могу не просто разрешить пользователям иметь свою переопределение css мое *

Ответы [ 3 ]

0 голосов
/ 15 февраля 2012

Добавьте этот заголовок HTTP на целевой сайт:

Access-Control-Allow-Origin: *

См. http://ox86.tumblr.com/post/17652823257/cross-domain-ajax-for-your-api-endpoints

0 голосов
/ 15 февраля 2012

Вы должны использовать Обмен сообщениями между документами .По сути, алгоритм должен работать примерно так:

  • в родительском кадре, добавьте прослушиватель сообщений f перед загрузкой iframe.
  • в iframe, установитепрослушиватель сообщений g и отправка сообщения на f после загрузки
  • f отправляет URL-адреса CSS в виде JSON-сериализованного сообщения, а g загружает CSS в iframe
0 голосов
/ 15 февраля 2012

Сайт, который вы загружаете во фрейм, должен предоставить вам разрешение с помощью CORS , прежде чем вы сможете дать указание браузерам своих посетителей обмениваться информацией между ним и вашим сайтом с помощью JS. По умолчанию это запрещено из соображений безопасности .

...