Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

JS: <iframe />

2.8K
08 августа 2006 года
Unglued
119 / / 15.09.2005
Создаю <iframe /> в него по средством writeln вписываю простейший набор тегов + дескриптор DIV:

[HTML]
var frame = document.getElementById("myFrame");
with(frame.document){
writeln("<html><body>");
writeln("<div id='mes'>&nbsp;<\/div>");
writeln("<\/body><\/html>");
}
[/HTML]
И очень мне тах хочется обратиться к DIV'у "mes" фрейма из родительского окна Аля так:

var mess = frame.document.getElementById('mes');

Естественно так не получается. Вопрос: как надо?
8
08 августа 2006 года
mfender
3.5K / / 15.06.2005
Не получается в IE? Попробуй в этом самом DIV'е параметр id продублировать парметром name. Вобщем
[HTML]
writeln("<div id='mes' name='mes'>&nbsp;<\/div>");
[/HTML]
Пока другой причины не видится...
2.8K
08 августа 2006 года
Unglued
119 / / 15.09.2005
Это глупо, т.к я запрашиваю getElementById('mes'), а не getElementByName. Однако, с чем черт не шутит, попробывал и так и эдок и нифига.

Забыл сказать, что при этом всем, всегда и везде вылезает одна и таже ошибка JS: "Разрешение откланено". Похоже это связано с безопасностью. Не понятно только какого черта я не могу творить со своим фреймом все что захочу :(
8
08 августа 2006 года
mfender
3.5K / / 15.06.2005
[QUOTE=Unglued]Это глупо, т.к я запрашиваю getElementById('mes'), а не getElementByName.[/QUOTE]
Это не глупо. Я один раз пол-дня бился со скриптом, который работал в IE, но в упор не хотел работать в FF. А ларчик просто открывался: в DIV'ах было написано name="..." и FF упорно отказывался реагировать на этот name в getElementById(), пока я не написал везде id="...".

Ну, хорошо, а что пишет alert(frame)? Вообще, назови переменную как-нибудь иначе. Уж очень скользкое название. Как бы оно не оказалось зарезервированным словом.

PS. getElementByName() - не бывает. Есть getElementsByName(). Но это другое. Он возвращает массив элементов.
2.8K
08 августа 2006 года
Unglued
119 / / 15.09.2005
Цитата:
PS. getElementByName() - не бывает. Есть getElementsByName(). Но это другое. Он возвращает массив элементов.


Это опечатка в посте.

Цитата:
Вообще, назови переменную как-нибудь иначе. Уж очень скользкое название. Как бы оно не оказалось зарезервированным словом.



Проверено - не зарезервированное, но таки переименовал от греха :)

Что-то странное с этим фрэймом. alert(frameMy) до writeln выдает Object, после уже ошибку "Отказано в доступе" (а было "Разрешение откланено"). Даже после того как я приписал close()
[HTML]....
writeln("<\/body><\/html>");
close();
....
alert(frameMy)[/HTML]
Все равно "Отказано в доступе".

Чую, при следующей попытке что-то сделать появится ошибка "Закрыто нафик".

8
08 августа 2006 года
mfender
3.5K / / 15.06.2005
Прикольно... А что говорит alert(document.frames.lenght)?

Вообще, загадочно всё это...

Кстати, а ты не внутри функции var frameMy определяешь?
2.8K
08 августа 2006 года
Unglued
119 / / 15.09.2005
Цитата:
Кстати, а ты не внутри функции var frameMy определяешь?


Нет. Иначе ваще все обваливается

alert(document.frames.lenght) почему-то undefined.

352
09 августа 2006 года
skywalker
694 / / 10.02.2006
а как ты ифрейм делаешь? покажи код.
2.8K
09 августа 2006 года
Unglued
119 / / 15.09.2005
iframe уже есть, я к нему обращаюсь через
var frame = document.getElementById("myFrame");
4
09 августа 2006 года
mike
3.7K / / 01.10.2002
Для начала я бы попробовал избавится от writeln, а использовал бы объектную модель. Возможно из-за него объект DIV не создается.

Что-то типа:

var i=cnsd.createElement('div');
document.getElementById("body").appendChild(i);

Только для начала нужно сам document создать
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог