!это глючное слово - Opera!

Kryakozyablik

Новичок
!это глючное слово - Opera!

Здрассе!
Вообщем пишу я чатик (небольшой). Даже написал почти :)
1. Чат зделан на iframe (далее для удобства просто буду называть его фреймом)
2. Чат с использованием "скрытого фрейма".
3. По событию OnLoad, у "скрытого фрейма", весь его контент переписываеться в "открытый фрейм" (средствами JavaScript).
4. обновление "скрытого фрейма" выполнено через setInterval.


В процессе возникла проблема.
Чат нормально функционирует под IE,Mozilla (во всех конфигурациях) а вот когда дело доходит до Оперы (Opera) то выявляеться следущее: Браузер как будто не догружает скрытый фрейм (т.е. Светятся песочные часики - идет загрузка) И как следствие не запускаеться скрипт который должен переписать контент в открытый фрейм.

Вопрос: Почему Opera не может догрузить фрейм ?
 

Kryakozyablik

Новичок
Даже если я обойдусь без OnLoad то проблема никуда не денеться. Браузер все равно будет тормозить (т.к. будет пытаться загрузить фрейм)

-~{}~ 21.02.06 14:00:

Линка
а у простого frame среагирует ?
 

Kryakozyablik

Новичок
Линка Это во всех версиях :)
Я же не просто его загружаю. А переодически перезагружаю.
И после первой перезагрузки браузер начинает тупить. Повторюсь: Не может догрузить фрейм.

-~{}~ 21.02.06 14:04:

Линка
Вот походу только это мне и осталось. (попробовать на frame)
А так нехоцца.
 

Линка

Новичок
Kryakozyablik вот работает в опере
<iframe id='fr' src="http://google.ru"></iframe>
<input type=button onclick="document.getElementById('fr').src='http://odessa-region.com';">
<input type=button onclick="document.getElementById('fr').src='http://google.ru'; ">
p.s. событие onload в опере не словишь -- не парься
 

Kryakozyablik

Новичок
Отдающий скрипт полностью рабочий. (другие браузеры работают нормально)

Возможно у меня проблема в другом. Вот до чего я дошел:
Если при загрузке всего документа я прописываю на JavaScript это -

function GetStl(){
var style1_="<head><SCRIPT>function S(){scroll(1,10000000);}</";
var style2_="SCRIPT></head><body bgcolor=#ECD79E>";
document.getElementById("mainframe").contentWindow.document.write(style1_+style2_);
}
GetStl();
</script>

Скрипт для начального задания цветов окна и т.д.
(ключевое слово WRITE)
то браузер "подвисает" с самого начала. Если я скрипт не прописываю то браузер не виснит пока я не запущу другой скриптик который как раз и отвечает за перенос контента из одного фрейма в другой. И в нем тоже используется WRITE.
Мне кажется что ОПЕРА неодекватно реагирует на WRITE.
И так слушаю ваше мнение...
 

Kane

Новичок
function GetStl(){
var style1_="<head><SCR"+"IPT>function S(){scroll(1,10000000);}</";
var style2_="SCR"+"IPT></head><body bgcolor=#ECD79E>";
document.getElementById("mainframe").contentWindow.document.write(style1_+style2_);
}
GetStl();
</script>

может так?
 

Kryakozyablik

Новичок
Kane
К сожалению дело не в этом. Единственное чего надо разделять это только </script> т.к. JavaScript считает эту последовательность символов окончанием скрипта. Все остальное делить не надо (можно конечно но все и так нормально отображается).

Тут в справочнике нашел что "метод WRITE открывает новый выходной поток". Может быть в Опере его надо как-то закрывать ?... (в любом случае я думаю что открыть его после закрытия уже не удастца:) )
 

Kryakozyablik

Новичок
такс.... уже что-то проясняется.
MiRacLe
Посибки ....но:
Мне надо, все что приходит в скрытый фрейм, переписывать в открытый. Если я закрою поток (document.close()) а потом придут данные и я снова открою поток то все что я писал в предыдущем потоке сотрется. Оно и правельно.
(я поток не закрывал и все работало, но как оказалось Опера тупит)

Ворос: Тогда каким образом лучше всего добавлять данные в открытый фрейм ?

-~{}~ 21.02.06 17:04:

Ой..... всмысле понятно - надо взять все из открытого фрейма, потом из скрытого. и заново записать все что взяли из открытого фрейма+все из скрытого фрейма.

Я беру контент открытого фрейма так:
var text_old=document.getElementById("mainframe").contentWindow.document.body.innerHTML;

но это дает только то, что прописано в BODY, а мне нужен весь контент. (включая head, title и т.д.)

Возможно ли взять ВСЕ из фрейма в переменную ? И каким образом?
 

Линка

Новичок
Kryakozyablik
<html id=ht>
<head>
<Yor tag>
</head>
<body id=body_> dd
</body>

<script>
alert(ht.innerHTML);
</script> </html>
 

Kryakozyablik

Новичок
Линка
И тебе спосибо.
(Я даже не думал что html можно id довать...)

Остался еще один не решенный вопрос:
В конце сообщения (от сервера) добавляеться :
<script>S()</script>
Но почемуто после того как я переписываю сообщение
в переменную (для последующей передачи переменной в открытый фрейм) вместо <script>S()</script> получаеться
<script></script> ???
(только в опере)

-~{}~ 22.02.06 13:04:

И так...
Моя проблема (подвисание оперы) возникала из-за того что яприменя метод write() не закрывал поток close().
(надо закрывать)

При закрытие потока открытие нового потока очищает старые записи. Принлось применить - document.body.innerHTML= "то что хотим прописать"

!!!На OnLoad Iframe в Opera - РЕАГИРУЕТ!!!

P.S. Как сохранить информацию в тегах <script></script> при записи в переменную (innerHTML) я так и не понял.

Вывод: Opera мне явно не нравиться.

Всем огромное спосибо.
Тема считаю закрытой.
 
Сверху