CSS-стили для IFRAME

weregod

unserializer
Дано: HTML-страница с типом документа xhtml1-strict.dtd и со своими CSS-стилями, в которую client-side (JavaScript) встраивается IFRAME.
Цель: назначить IFRAME-у классы CSS-стилей (не дописывая стили странице) таким образом, чтобы, меняя классы стилей на клиенте, браузер понимал смену классов стилей и эта смена влияла на отображение IFRAME.
 

Redjik

Джедай-мастер
в iframe стили из вне не поменять - можно парсить страницу и выдавать с нужными стилями
 

weregod

unserializer
Решил проблему следующим образом: из JS, подгружаемом в IFRAME, загружаю файл стилей в исходную страницу:
PHP:
var elem = document.createElement('LINK');

elem.setAttribute('rel', 'stylesheet');
elem.setAttribute('type', 'text/css');
elem.setAttribute('media', 'screen');
elem.setAttribute('href', '...css');
this.frame.parentNode.ownerDocument.getElementsByTagName('head')[0].appendChild(elem);
 

Redjik

Джедай-мастер
weregod
а чего спорить - мы про разные вещи говорим немного, я имел ввиду, если нет доступа к оригинальной странице, которая внутри iframe

ты делаешь блок для того, чтобы его вставляли другие сайты и могли назначать свои стили, а я думал тыришь блок и пытаешься поменять ему стили.

кстати, твой вариант возьму на заметку, когда понадобится такую штуку делать =)
 

todd

Новичок
weregod
Почему то не работает :(
Этот код нужно вставлять в ту страницу, которая фреймится, я правильно понимаю?
 

todd

Новичок
weregod
Я отправил подробно, что я делал и что не получается на почту [email protected].
Можешь объяснить подробнее? я уже перепробовал все, на что горазд. :(
 

todd

Новичок
смотри, есть сторонний сайт, который фреймит мою страницу:

PHP:
<head>
...
<link rel="stylesheet" type="text/css" href="http://othersite.com/style.css">
</head>
<body>
<iframe src="http://mysite.com/"></iframe>
</body>
И есть моя страница, ее фреймит другой сайт:

PHP:
var elem = document.createElement('LINK');

elem.setAttribute('rel', 'stylesheet');
elem.setAttribute('type', 'text/css');
elem.setAttribute('media', 'screen');
elem.setAttribute('href', 'http://mysite.com/style.css');
this.frame.parentNode.ownerDocument.getElementsByTagName('head')[0].appendChild(elem);
Верно? Почему то реализация не работает, может быть я что то делаю коряво?
 

weregod

unserializer
у меня был случай, когда домен совпадал
скорее всего в родительское окно с другого домена ничего добавить в дом не получится
 

todd

Новичок
Ясно, чтож, придется попытаться выкручиваться аджаксом и пост запросами.
Вконтакте каким то образом встраивает свои плагины на другие сайты. Это либо ифрейм, либо пост, больше ничего в голову не приходит
 

todd

Новичок
Решил проблему при помощи PostMessage. В этой теме уже дважды выясняется, что javascript способен на всё )
 
Сверху