Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Связь iframe с родительским окном (https://javascript.ru/forum/misc/28518-svyaz-iframe-s-roditelskim-oknom.html)

Bebarr Swallow 22.05.2012 21:50

Связь iframe с родительским окном
 
В iframe есть функция которая должна получить доступ к родительскому окну. Раньше такого не делал, помогите :)

lord2kim 22.05.2012 22:41

Цитата:

Сообщение от Bebarr Swallow (Сообщение 176114)
В iframe есть функция которая должна получить доступ к родительскому окну. Раньше такого не делал, помогите :)

как то так к родительскому
window.parent.document.getElementById(id);

и как то так ко внутренностям iframe
document.getElementById(id).contentWindow.document.getElementById(ID);

Bebarr Swallow 23.05.2012 20:06

window.parent undefined :(

window.parent.document.write("<h1>test</h1>");

"Uncaught TypeError: Cannot read property 'document' of undefined"

lord2kim 23.05.2012 23:55

Цитата:

Сообщение от Bebarr Swallow (Сообщение 176264)
window.parent undefined :(

window.parent.document.write("<h1>test</h1>");

"Uncaught TypeError: Cannot read property 'document' of undefined"

странно...у меня работает...
выкинь код...общей страницы с iframe и элементом к которым управлять и страницу из iframe

Kolyaj 24.05.2012 00:06

Цитата:

Сообщение от Bebarr Swallow
window.parent undefined

Значит этот код запускается НЕ в ифрейме. В ифрейме всегда есть parent.

lord2kim 24.05.2012 14:38

Цитата:

Сообщение от Kolyaj (Сообщение 176312)
Цитата:

Сообщение от Bebarr Swallow (Сообщение 176264)
window.parent undefined

Значит этот код запускается НЕ в ифрейме. В ифрейме всегда есть parent.

действительно...может ты его определяешь не в плавающем, а просто во фрейме?

Deff 25.05.2012 02:36

Цитата:

Сообщение от Bebarr Swallow (Сообщение 176264)
window.parent undefined :(

window.parent.document.write("<h1>test</h1>");

"Uncaught TypeError: Cannot read property 'document' of undefined"

Не будет работать в родителе, используйте

window.parent.document.getElementById(id).innerHTM L="Текст";

----------------
.write работает до полной загрузки DOM, а коли фрейм загрузился - DOM родителя уже давно загружен

Gvozd 25.05.2012 02:52

Цитата:

Сообщение от Deff
коли фрейм загрузился - DOM родителя уже давно загружен

что за глупые домыслы?
это чистейшой воды ложь

Deff 25.05.2012 03:05

Gvozd,
Оспариваемо но факт - запустить write из фрейма на Родителе вряд ли сможете, ежли ток страница Родителя нереально длинная и напичкана iframe
Смысл в данном факте => запустить write из фрейма на Родителе маловероятно

Ксать ответили бы на вопросик => http://javascript.ru/forum/misc/2857...ere-nazad.html

Gvozd 25.05.2012 14:02

Цитата:

Сообщение от Deff
Оспариваемо но факт

Эта фраза сделала мой день)
Цитата:

Сообщение от Deff
запустить write из фрейма на Родителе маловероятно

это уже ближе к правде
Если фрейм загрузится раньше основной страницы, то ему будет доступен document.write, но его вызов затрет всю родительскую страницу.
Кроме Opera - в ней будет брошено исключение UNSUPPORTED_DOCUMENT_OPEN_ERR, и родительская страница останется без изменений.
Цитата:

Сообщение от Deff
Ксать ответили бы на вопросик => Возможен ли Запуск ява-скрипт при откате Истории в браузере назад ?

Можно я сам буду решать какие темы читать, и на какие вопросы отвечать?

Deff 25.05.2012 14:34

Gvozd, меряться письками мне рано, но запустить write при Ваших условиях - можно, не обязательно запускать write непосредственно из фрейма, достаточно установить некие условия для родителя - а он сам запустит
Другое дело,что условия загрузки фрейма ранее родительской для конкретного запроса маловероятны, так шо теоретические беседы все ф топку

Bebarr Swallow 25.05.2012 20:17

Вообще document.write() мне совсем не нужен. Для примера написал что первое в голову пришло.

Полазил в консоли и выяснилось:
Unsafe JavaScript attempt to access frame with URL http://example.com/ from frame with URL http://somesite.com/?param=123&other=false. Domains, protocols and ports must match.


Что делать?

Kolyaj 25.05.2012 20:45

Ничего не делать, смириться.
Цитата:

Сообщение от Bebarr Swallow
Domains, protocols and ports must match.

В крайнем случае postMessage.

Gvozd 25.05.2012 22:25

Цитата:

Сообщение от Deff
так шо теоретические беседы все ф топку

Из нас двоих теоретик явно Вы.
Вы заявляется факты, которые не имеют ничего общего с практикой, и похоже основываетесь на предсказаниях по кофейной гуще
Цитата:

Сообщение от Deff
для конкретного запроса маловероятны

Цитата:

Сообщение от Deff
маловероятно

Цитата:

Сообщение от Deff
вряд ли сможете,

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

И я в отличии от Вас не только основываюсь на собственном мнении, в попытке логически предположить результат, но еще и провел эксперимент

Код основной страницы
<script>
window.onload = function() {
	console.log('Base page loaded');
}
</script>
<iframe src="frame.php"></iframe>
<?php echo  str_repeat(' ', 1000); ?>


Код фрейма
<script>
window.onload = function() {
	console.log('Frame loaded');
}
</script>


В Chrome, Opera, FireFox результат одинаковый:
Цитата:

Frame loaded
Base page loaded
Кстати, строку <?php echo str_repeat(' ', 1000); ?> можно и убрать - результат у меня тот же наблюдается

Deff 25.05.2012 23:16

Цитата:

Сообщение от Bebarr Swallow (Сообщение 176617)
Вообще document.write() мне совсем не нужен. Для примера написал что первое в голову пришло.

Полазил в консоли и выяснилось:
Unsafe JavaScript attempt to access frame with URL http://example.com/ from frame with URL http://somesite.com/?param=123&other=false. Domains, protocols and ports must match.


Что делать?

1. А у вас доступ есть на уровне PHP обоих доменов?

2. А какова конечная цель задумки ?, что нужно вывести из фрейма ?

Bebarr Swallow 26.05.2012 13:44

Цитата:

Сообщение от Deff (Сообщение 176629)
1. А у вас доступ есть на уровне PHP обоих доменов?

2. А какова конечная цель задумки ?, что нужно вывести из фрейма ?

Доступа нет. Есть чужой сайт к которому я подключаю фрейм из еще иного сайта. Во фрейме работает юзерскрипт который обрабатывает "инфу" в том фрейме, и в конце создает определенную переменную, которую он должен передать в родительское окно (значение переменной записывает в элемент по его id методом innerText либо innerHTML)

Deff 26.05.2012 13:50

Цитата:

Сообщение от Bebarr Swallow (Сообщение 176673)
Доступа нет. Есть чужой сайт к которому я подключаю фрейм из еще иного сайта. Во фрейме работает юзерскрипт который обрабатывает "инфу" в том фрейме, и в конце создает определенную переменную, которую он должен передать в родительское окно (значение переменной записывает в элемент по его id методом innerText либо innerHTML)

Нарисуйте в Пейнте блок схему... - укажите на каждом фрейме ссылки - WWW.BB.com WWW.AA.com WWW.CC.com

И стрелками откуда -куда передаваться данные и Где Фрейм с Вашими скриптами и фреймы к котором Вы доступ ни скриптовый, ни PHP не имеете.

Gvozd 26.05.2012 14:02

http://javascript.ru/forum/misc/9459...prosy-faq.html

Bebarr Swallow 26.05.2012 20:02

Цитата:

Сообщение от Gvozd (Сообщение 176676)

Так бы сразу.

Полезное услышал только postMessage. Скорее всего ним и займусь

Deff 26.05.2012 20:28

Gvozd,
:yes: Вот не дал поэкспериментировать! Зачем отшивать то - не разобравшись в задаче ?

Gvozd 26.05.2012 20:34

Цитата:

Сообщение от Bebarr Swallow
Полезное услышал только postMessage. Скорее всего ним и займусь

если вы хотите получать инфу не со своего сайта на свой, то скорее всего ничего не получится
Цитата:

Сообщение от Deff
Вот не дал поэкспериментировать! Зачем отшивать то - не разобравшись в задаче ?

над чем я тебе не дал поэкспериментировать?
И почему мне нельзя отшивать человека, задающего вопросы на уровне FAQ? Именно для того FAQ и существует, чтобы не приходилось пересказывать сотни раз одно и то же, но разным людям

Deff 26.05.2012 22:37

Gvozd,
Вот скок сижу здесь - одни натационные вещи от вас слышу...

Ну показали б класс -хоть за три дня кому нидь поддержкой, - посылать на ФАК все мастера . На просьбу помочь посылают вдаль. Просил жа с фреймом оказать помощь в моей теме - что услышал ?

devote 26.05.2012 22:45

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

devote 26.05.2012 22:51

ах да, ни в коем случае там не авторизуйтесь на сайтах и не вводите важную инфу... все кукисы хранятся в одном общем файле, и поэтому если вы авторизуетесь то другой зашедший будет сидеть под вашей авторизацией...

Это надо разделять для каждой сессии кукисы, но я этого там не делал...

Gvozd 26.05.2012 22:57

Цитата:

Сообщение от Deff
Вот скок сижу здесь - одни натационные вещи от вас слышу...

А вы тут сколько сидите?
А я сколько?
Ну да если вы считаете что сложили единственно верное мнение обо мне, то толку мне вас разубеждать.
Цитата:

Сообщение от Deff
Ну показали б класс -хоть за три дня кому нидь поддержкой

Да ладно.
Перейдите по моему профилю, и посмотрите мои отзывы.
В том числе два положительных, от людей которым я помог два часа назад.
Цитата:

Сообщение от Deff
На просьбу помочь посылают вдаль.

Цитата:

Сообщение от Deff
посылать на ФАК все мастера

Посылать имею обыкновение тех кто, этого заслуживает
Цитата:

Сообщение от Deff
Просил жа с фреймом оказать помощь в моей теме - что услышал ?

Я вас послал, в связи с вашим явным хамством.
Не хватало, чтобы еще каждый встречный-поперечный мне указывал какие темы мне читать, и на какие вопросы отвечать.
Я здесь на для ваших личных консультаций - я читаю и отвечаю там, где сочту интересным/нужным для себя и/или собеседника.
Если же хотите личных консультаций, то будьте добры сперва предложить оплату, а не требуйте у меня консультацию, как будто я вам что-то должен.
А также, почему я не ответил на вашу тему до вашей хамской "просьбы":
я ее видел, и я не знаю ответа на ваш вопрос.
Так как вопрос для меня не является интересным, я не собирался тратить время на гугление и эксперименты заместо вас.
А раз я не знаю ответа, то мне и нечего сказать было в той теме. Думаю если бы я послал вас в гугл, вы бы еще больше разобиделись бы

devote 26.05.2012 23:36

Ну вы тут развели холливар

Deff,
твоя проблема легко решается, давно бы уже сам написал бы а не ждал..

Deff 26.05.2012 23:37

Цитата:

Сообщение от Gvozd
А также, почему я не ответил на вашу тему до вашей хамской "просьбы":
я ее видел, и я не знаю ответа на ваш вопрос.

Cпс ... это меня и занимало - посколь вы один из ранговых тут

Бум искать....

Deff 26.05.2012 23:40

Цитата:

Сообщение от devote
писал я на PHP мини прокси сервер для подобных случаев, когда нужно внедрить свой скрипт в чужой сайт, вот ссылка.. пока работает.. но потом уберу.. если надо могу скинуть скрипт на PHP

devote,
Я вашет тут надыбал за пару часов решение - но нужны JS на обоих сторонах (И пока с ИЕ кроссбраузерность не проверил Мозила Опера и Гугл вродь пашут

Цитата:

Сообщение от devote
Deff,
твоя проблема легко решается, давно бы уже сам написал бы а не ждал..

:-E Прост для меня это совсем новая задачка - не знаю с какого конца браться - ни разу история в браузере не тревожила

Kolyaj 27.05.2012 10:00

Цитата:

Сообщение от Gvozd
если вы хотите получать инфу не со своего сайта на свой, то скорее всего ничего не получится

У него же юзерскрипт, можно считать, что все сайты свои.


Часовой пояс GMT +3, время: 01:04.