Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с iframe, для фоновой отправки файла 
V
    Опции темы
02077461
Дата 14.12.2007, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Прочел этот ответ и задался несколькими вопросами:

Можно ли использовать в качестве "оповестителя" атрибут onload? 
И главный вопрос: 
this.iframe.onload = function(){alert(this.contentDocument.body)};
Почему мне выдает uncaught exception: Permission denied to get property HTMLDocument.body

Как мне получить содержимое фрейма?.. 
PM   Вверх
Mymik
Дата 14.12.2007, 14:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 11
Всего: 78



02077461, скорее всего у тебя проблема состоит в том, что iFrame находится не в твоем доменном пространстве. 
Назначь src у этого iFrame твоего сайта. т.е. типа src="./blank.html" и тогда ты сможешь работать с ним.


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
02077461
Дата 14.12.2007, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Нашел ответ. 
Цитата(Aliance @  29.9.2005,  15:15 Найти цитируемый пост)
страницы должны быть с одного домена. Политика безопастности! 

В принципе подходит для моего случая. 
PM   Вверх
02077461
Дата 14.12.2007, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Гм... еще одна задачка:
Код

var iframe = document.createElement('IFRAME');
iframe.name = 'GX_IFRAME_2';
document.body.appendChild(iframe);

var form = document[formname]; // formname -- defined variable
form.target = 'GX_IFRAME_2';
form.submit();


В FF работает хорошо... а вот в IE...
Запрос посылается через новое окно.. хотя отчетливо видно, что iframe создается. 

Чем можно вылечить?..

PM   Вверх
Mymik
Дата 14.12.2007, 20:26 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 11
Всего: 78



02077461, 
Цитата(02077461 @  14.12.2007,  20:06 Найти цитируемый пост)
var form = document[formname]; 
а че, такое можно делать ???
Я так понимаю, что там хранится id формы. Так может быть лучше воспользоваться
Код

var form = document.getElementById(formname);



--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
02077461
Дата 15.12.2007, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Код

var form = document[formname];

можно еще использовать document.forms[formname].
formname -- атрибут name элемента form, поэтому getElementById не подходит, да и не в этом суть. 

появилась еще одна проблема, которую я не хочу выносить в отдельный топик:
при установки слушателя на onload, скажем 
Код

iframe.onclick = function(){alert(this.contentDocument.body.innerHTML);

слушатель срабатывает, но алерт выдается пустой. можно конечно использовать setTimeout, но это шаманство и не хочется на это полагаться. 
Нужно заметить, что кодом, загружаемым в iframe, руководить нельзя. 
--
Заранее спасибо

Это сообщение отредактировал(а) 02077461 - 15.12.2007, 01:15
PM   Вверх
egao
Дата 15.12.2007, 13:35 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 6.8.2007

Репутация: -1
Всего: нет



02077461,  почему бы просто в подгружаемой странице не подгрузить яваскрипт, который по онлоад стукнется к перенту и вызовет колбэк?

Код

window.onload= function(){
    window.frameElement.onContentLoaded( document.getElementById( 'content' ) );
}


а то, как ты сейчас пытаешься реализовать - имеет серьёзные траблы с кроссбраузерностью.. :(

Это сообщение отредактировал(а) egao - 15.12.2007, 13:38
PM MAIL   Вверх
02077461
Дата 15.12.2007, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Цитата(02077461 @  15.12.2007,  01:13 Найти цитируемый пост)
Нужно заметить, что кодом, загружаемым в iframe, руководить нельзя. 

Вот все плохо. 

Проблемы сыпятся, все-таки iframe -- не лучше конечно средство, но делать больше нечего. 
Наверное закрою тему, всем спасибо. 
PM   Вверх
egao
Дата 16.12.2007, 00:20 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 6.8.2007

Репутация: -1
Всего: нет



что значит "нельзя"? религия не позволяет или пытаемся своровать контент?
PM MAIL   Вверх
02077461
Дата 16.12.2007, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Задача не позволяет. Если есть конструктивное предложение -- милости просим. 

Вообще, кому интересно выход нашел следующий: через closures вызываю обработку onload через setTimeout, надо сказать, что посылка идет с заголовком content-type: text/plain, те кто имеет опыт в этом деле знают, что что бы получить оригинальный текст в данном случае, необходимо выполнить преобразование специальных символов (&lt;&gt; -> <>). 

Представляю поток критики в адрес этого метода и прошу постить сюда лишь полезные идеи. Мусор высказывайте монитору.
--
Спасибо.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0550 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.