this.frame_lnk = document.createElement('iframe');
this.frame_lnk.id = this.frame_id;
this.main_div_lnk.appendChild(this.frame_lnk);
Изменение стиля содержимого iframe из parent документа
основного документа.
создаю iframe:
Код:
получаю ссылку на document из iframe:
Код:
idoc = this.Get_IFrame_Doc();
инициализирую документ и задаю стиль:
Код:
idoc.open();
idoc.write("<html><head>");
(1)idoc.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"../css/style.css\" />");
idoc.write("</head><body></body></html>");
idoc.close();
idoc.write("<html><head>");
(1)idoc.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"../css/style.css\" />");
idoc.write("</head><body></body></html>");
idoc.close();
Интересно то, что в IE вышеприведенная конструкция работает.
А в FF нет. Он запинается на строке (1) и после, при попытке обратиться к содержимому iframe говорит, что объект не имеет свойств...
Может подскажет кто, как нужно задать стиль чтобы работало не только в IE но и в FF?
P.S. Если кто в меня кинет ссылкой на мануалы, буду очень благодарен.
Пробовал на мозиловском сайте на эту тему копать, но как-то там ничего по существу не нашел.
или
[html]document.getElementById('frame_id').window.document.blahblahblan[/html]вроде так сканает.
Этим занимается функция Get_IFrame_Doc().
Я не могу изменить стиль документа в FF. Смотри третий квотинг.
Приведенный код работает в IE но не работает в FF... Мне оч. интересно почему:-)
куда писАть, никто не знает )) особо FF. а писАть (write) надо в свойство document соотвессна, не имея этого свойства (а точнее имея его, но со значением undefined) мы не можем сделать write.
как бы вот так...
а еще FF не знает такой функции open для iframe :)
ЗЫ: если я где-то не прав, то поправьте пжалста ) самому интересно стало :)
Цитата: Тень Пса
я так думаю потому, что about :blank для IE всё-таки имеет body (или только <HTML>) а FF создаёт девственно чистый iframe и внутри ничего.
куда писАть, никто не знает )) особо FF. а писАть (write) надо в свойство document соотвессна, не имея этого свойства (а точнее имея его, но со значением undefined) мы не можем сделать write.
как бы вот так...
куда писАть, никто не знает )) особо FF. а писАть (write) надо в свойство document соотвессна, не имея этого свойства (а точнее имея его, но со значением undefined) мы не можем сделать write.
как бы вот так...
Насколько я понял, iframe пустой в обоих случаях.
Для того, чтобы можно было обрабатывать содержимое я открываю/закрываю документ.
Код:
idoc.open();
idoc.write("<html><head>");
(1)idoc.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"../css/style.css\" />");
idoc.write("</head><body></body></html>");
idoc.close();
idoc.write("<html><head>");
(1)idoc.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"../css/style.css\" />");
idoc.write("</head><body></body></html>");
idoc.close();
Так что в плане "записи" в документ все нормально.
Вместо (1) я могу сделать idoc.write("цукцукываыва"); и строка
будет отображена внутри фрейма.
Тут косяк именно в том, что я не могу применить стиль указанным
выше образом. IE воспринимает такой код, а FF нет.
Интересно, как это можно побороть.
Цитата:
а еще FF не знает такой функции open для iframe :)
А я и не вызываю функцию open для iframe...
idoc это ссылка на документ, содержащийся в iframe..
попробуй вместо write использовать createElement и setAttribute
вот такой код у меня работал нормально. в твоем случае тоже должно получится (вместо style - link)
Код:
//создаем стиль если не существует вообще, что мало вероятно
if (document.styleSheets.length < 1) {
var stl = document.createElement("style");
stl.setAttribute("type", "text/css");
var hdr = document.getElementsByTagName("head");
hdr[0].appendChild(stl); // тег head всегда один
}
// дальше я добавлял стили через
// document.styleSheets[0].addRule
// и document.styleSheets[0].insertRule
if (document.styleSheets.length < 1) {
var stl = document.createElement("style");
stl.setAttribute("type", "text/css");
var hdr = document.getElementsByTagName("head");
hdr[0].appendChild(stl); // тег head всегда один
}
// дальше я добавлял стили через
// document.styleSheets[0].addRule
// и document.styleSheets[0].insertRule
Код:
idoc = this.Get_IFrame_Doc();
idoc.open();
idoc.write("<html><head></head><body></body></html>");
idoc.close();
stl = idoc.createElement("link");
stl.rel = "stylesheet";
stl.type = "text/css";
stl.href = "../css/my_style.css";
idoc.getElementsByTagName("head")[0].appendChild(stl);
idoc.open();
idoc.write("<html><head></head><body></body></html>");
idoc.close();
stl = idoc.createElement("link");
stl.rel = "stylesheet";
stl.type = "text/css";
stl.href = "../css/my_style.css";
idoc.getElementsByTagName("head")[0].appendChild(stl);