Javascript и IFrame
От: stasiko  
Дата: 28.03.08 09:44
Оценка:
Всем добрый день!

ситуация: есть главный html файл, в нём есть JavaScript функция и IFrame:
<html>
<body>
<iframe src="stat.html"></iframe>

<script language="JavaScript" type="text/javascript">
  function SomeFunc(){return 0;}
<script>
</body>
</html>

в файле stat.html содержиться JavaScript код, который вызывается при загрузке в IFrame:
<script language="JavaScript" type="text/javascript">
  parent.SomeFunc();
<script>

проблема: если в iframe загружать не статичный html файл а некий скрипт (т.е. src="httр://localhost/cgi-bin/script.sh"),
который выдаёт точно такой же результат (плюс заголовок вида "Content-type: text/html\n\n"),
то JavaScript выдает ошибку:
TypeError: Value undefined (result of expression parent.SomeFunc) is not an object. Cannot be called.

причем если написать вместо parent.SomeFunc(); просто alert("wtf"); то все будет работать.

подскажите плз в чем беда
Re: Javascript и IFrame
От: DeZhavi Россия  
Дата: 28.03.08 10:53
Оценка:
S>подскажите плз в чем беда
<script language="JavaScript" type="text/javascript">
top.SomeFunc();
<script>
Попробуйте так.
Re[2]: Javascript и IFrame
От: stasiko  
Дата: 28.03.08 11:37
Оценка:
DZ><script language="JavaScript" type="text/javascript">
DZ> top.SomeFunc();
DZ><script>
DZ>Попробуйте так.

так пробовал, та же ошибка. вообще по всякому проповал, поэтому и задал вопрос
Re: Javascript и IFrame
От: Sinclair Россия https://github.com/evilguest/
Дата: 28.03.08 12:20
Оценка:
Здравствуйте, stasiko, Вы писали:
S>подскажите плз в чем беда
Надо полагать в урлах к stat.html и к script.sh. На всякий случай напомню, что фреймы, загруженные из разных доменов, не могут взаимодействовать между собой.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Javascript и IFrame
От: stasiko  
Дата: 28.03.08 12:54
Оценка:
Здравствуйте, Sinclair, Вы писали:
S>Надо полагать в урлах к stat.html и к script.sh. На всякий случай напомню, что фреймы, загруженные из разных доменов, не могут взаимодействовать между собой.

действительно, обратившись к главному html файлу как к http://localhost/main.html вместо /home/stasiko/main.html всё получилось.
я помнил про XSS, но не заметил такой мелочи.
спасибо всем кто откликнулся!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.