![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Ciber SLasH |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: 24 Всего: 67 |
Никак не получается достать массив из документа, загруженного в IFRAME.
Допустим есть 2 файла: index.htm:
test.htm:
и вот как теперь из index.htm прочитать массив mas, который загружен в IFRAME ? |
||||
|
|||||
| Black |
|
||||
|
Web-Development ![]() ![]() Профиль Группа: Участник Сообщений: 980 Регистрация: 15.8.2004 Репутация: 4 Всего: 45 |
Ciber SLasH
может создать функцию в test.htm, которая возвращала бы массив???
А вызывать в index.htm так:
В NeedArray массив P.S: все писал от руки не проверял... поэтому могут быть ошикбки. -------------------- Могу все, но ничего не умею :-) |
||||
|
|||||
| Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: 24 Всего: 67 |
Поискав в сети инфу по запросу "contentDocument" наткнулся на статью, в которой говорится, что из документа, в котором есть IFRAME, не добраться до данных документа, загруженных в этот IFRAME.
Источник: http://www.kruglov.ru/articles/nontrivialjs/ |
|||
|
||||
| Black |
|
|||
|
Web-Development ![]() ![]() Профиль Группа: Участник Сообщений: 980 Регистрация: 15.8.2004 Репутация: 4 Всего: 45 |
Ciber SLasH
Почему нельзя, можно Под ИЕ и Мозиллой нужно обращатся IFRAME.contentWindow.document. Под Opera так: parent.IFRAME.document. Где IFRAME - id фрейма. Это сообщение отредактировал(а) PHP-DIRECTOR - 21.6.2005, 09:54 -------------------- Могу все, но ничего не умею :-) |
|||
|
||||
| Black |
|
|||
|
Web-Development ![]() ![]() Профиль Группа: Участник Сообщений: 980 Регистрация: 15.8.2004 Репутация: 4 Всего: 45 |
А Круглов человек странный он все еще считает что есть люди которые пользуются Оперой 5, 6. Вот в них возможно и нельзя.
-------------------- Могу все, но ничего не умею :-) |
|||
|
||||
| Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: 24 Всего: 67 |
Всё это я пробовал -- нифига не получилось. Проведи эксперимент с поими 2-мя документами. |
|||
|
||||
| Black |
|
||||
|
Web-Development ![]() ![]() Профиль Группа: Участник Сообщений: 980 Регистрация: 15.8.2004 Репутация: 4 Всего: 45 |
В lala4.html
Это сообщение отредактировал(а) PHP-DIRECTOR - 21.6.2005, 10:16 -------------------- Могу все, но ничего не умею :-) |
||||
|
|||||
| Black |
|
|||
|
Web-Development ![]() ![]() Профиль Группа: Участник Сообщений: 980 Регистрация: 15.8.2004 Репутация: 4 Всего: 45 |
Кстати, данный пример работает и в новой Opere 8.01
Вероятно, сделали поддержку стандартного обращения. -------------------- Могу все, но ничего не умею :-) |
|||
|
||||
| Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: 24 Всего: 67 |
2PHP-DIRECTOR:
Хм, я ведь делал тоже самое по сути, но у меня ничего не получалось. Скорее всего из-за того, что я сразу пытался "достучаться" до содержимого IFRAME'а, а он ещё не успевал подгрузиться. Т.е. если ставить на кнопку функцию обработки, но всё ништяк. 10х, натолкнул на мысль... (с меня флюс |
|||
|
||||
| Ciber SLasH |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: 24 Всего: 67 |
Появилась кой-какая проблема.
В Firefox этот код не работает: index.htm:
test.htm:
Как только загружается index.htm, должна показываться надпись: IFRAME content is: "...". Проверял в IE и Opera -- здесь всё нормально, а вот Лису рогом упёрлась. Как победить? |
||||
|
|||||
| Black |
|
||||
|
Web-Development ![]() ![]() Профиль Группа: Участник Сообщений: 980 Регистрация: 15.8.2004 Репутация: 4 Всего: 45 |
Ciber SLasH
ох ты мне и задачку дал :-) Двадцать минут тупо смотрел на скрипт все ок... потом глянул на ифрейм и со стула упал
замени на:
Вот и весь прикол -------------------- Могу все, но ничего не умею :-) |
||||
|
|||||
| Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: 24 Всего: 67 |
Да, это я блин забыл исправить...
Исправил, но в Лисе по прежднему не работает. |
|||
|
||||
| Sardar |
|
||||||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Нельзя переносить DOM ноды с одного документа в другой напрямую через appendChild, всё остальное можно и даже в "старых" браузерах.
Более страшного изврата я не видел Смотрим и думаем почему это работает
test.htm
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||||||
|
|||||||||
| Ciber SLasH |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: 24 Всего: 67 |
2Sardar:
10х за пример Твой пример работает в IE, Firefox, но не работает в Опере. В Опере вот это: ifrm.contentWindow == undefined в ней нужно через: ifrm.contentDocument И появляется загвоздка с вызовом функции из IFRAME. Вот так не пашет в Опере: ifrm_cont.MyFunc() и так тоже: ifrm_cont.window.MyFunc() Можно извратиться, чтобы работало во всех 3-х бродилках, но тогда нужно импортировать скрипт из IFRAME в главный документ:
где элемент с ID='jscode' находится в главном документе:
а элемент с ID='ifr_js' находится в документе IFRAME-a:
Может можно как-то без импорта скрипта обойтись, чтобы работало в этих 3-х бродилках ? |
||||||
|
|||||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Точно, в опере же не существует contentWindow...
Лучше не извращаться с текстом скриптов, а вызыват родительские функции из ифрейма: opener.takeValue(mas); -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: 24 Всего: 67 |
Что-то не работает
Пишу: ifrm_cont.opener.MyFunc() или: opener.MyFunc() и то и другое == undefined. |
|||
|
||||
| Black |
|
|||
|
Web-Development ![]() ![]() Профиль Группа: Участник Сообщений: 980 Регистрация: 15.8.2004 Репутация: 4 Всего: 45 |
На заметку:
в новой Opere 8.01 contentWindow существует, поэтому пример Sardara там успешно работает. Добавили-таки викинги поддержку. Жаль, никто еще Oper'ой 8.01 не пользуется -------------------- Могу все, но ничего не умею :-) |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Нет, ты должен из ифрейма писать opener, рядом с твоим mas -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: 24 Всего: 67 |
Всё равно не пашет Пишу в скрипте test.htm: opener.mas = [1, 2]; В index.htm: alert(ifrm_cont.mas) Бродилка ругается: opener есть null |
|||
|
||||
| Sardar |
|
||||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Какой кошмар Повторяю ты достаёшь через contentDocument ссылку на document. Глобальным контекстом скриптов являеться window, а получить window из document по моему нельзя. Вывод: не паримся и пишем в родительском окне(index.htm):
В дочернем окне(test.htm):
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||||
|
|||||||
| Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: 24 Всего: 67 |
Написал так, как ты сказал, но в test.htm opener всегда равен null.
Ведь окно, то у нас не открывается, а загружается в IFRAME -- может поэтому opener равен null ? |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Верно, тогда parent, это точно сработает. А opener по логике вещей не только в открываемых окошках есть.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: 24 Всего: 67 |
10x огромный тебе Sardar !!
|
|||
|
||||
| Aliance |
|
||||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
Разве?
Не то? |
||||
|
|||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Aliance держи плюс, век живи - век учись
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Andre Zak |
|
|||
|
Unregistered |
Все перечисленное не работает если во фрейм подгружать страницу с внешнего сервера? Проверил, у меня не получилось. Может причиной является:
Или можно как-то это обойти. Мне нужно получить содержимое страницы загруженной во фрейм с внешнего хоста. |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
страницы должны быть с одного домена. Политика безопастности!
|
|||
|
||||
| Greendrake |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 364 Регистрация: 14.7.2005 Репутация: нет Всего: 6 |
Так то же IE & Opera only Пока что придумал только при создании окон и фреймов выполнять в них:
|
||||||
|
|||||||
| Ghirik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 919 Регистрация: 26.3.2007 Репутация: 13 Всего: 20 |
Так долго можно париться, здесь работает... а здесь не работает...
Вы укажите браузерам доктип во всех файлах со ссылкой на документ, например так:
обычно это помогает избежать кривое восприятие браузерами "по умолчанию"... P.S. Не заметил второй страницы, отвечал на первую... Хотя, не отказываюсь от своих слов... Это сообщение отредактировал(а) Ghirik - 10.12.2007, 10:43 -------------------- Отдадим всё клиенту, пускай его машина мучается... |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |