С нами с 29.07.03
Сообщения: 426
Рейтинг: 512
|
Добавлено: 30/06/06 в 10:40 |
Нужно передать локейшен на iframe явой,
делаю так
Код: |
<script>
for (i=0;i<document.frames.length;i++) {
url = 'blahblahblah';
document.frames[i].location = url;
}
</script>
|
работает прекрасно в ИЕ и Опере, с Фаерфоксом работать отказывается полностью.
Может кто сталкивался с подобной проблемой?
|
|
|
|
1К13!
С нами с 07.05.04
Сообщения: 7721
Рейтинг: 2428
|
Добавлено: 30/06/06 в 11:14 |
мот я чё недопонимаю, но я пишу ифрейм явой через document.write
|
|
|
|
С нами с 29.07.03
Сообщения: 426
Рейтинг: 512
|
Добавлено: 30/06/06 в 11:24 |
Не, ифрейм уже есть на странице, нужно явой сменить его свойство, заданное параметром src
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 30/06/06 в 11:25 |
document.frames[i].location.assign(url);
?
|
|
|
|
Раздаю инвайты, ищу линк-трейд
С нами с 20.08.04
Сообщения: 16687
Рейтинг: 8593
|
Добавлено: 30/06/06 в 11:38 |
Да, кинь сокращенный код для примера
Там дело в том, имхо - что файрфокс действует строго по W3C а ие - у них еще плюс и своя модель есть
опера старалась поддерживать весь код, работающий в ие
А вообще попробуй
parent.frames[i].location = url;
тк для document W3C не предусмотрено коллекции фрейм
Последний раз редактировалось: pierx (30/06/06 в 11:51), всего редактировалось 1 раз
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 30/06/06 в 11:50 |
pierx писал: | файрфокс действует строго по W3C а ие - у них еще плюс и своя модель есть |
ага. вот например
window.location = 'string';
это глупо с точки зрения жаба-скрипт, т.к. window.location это объект, а не свойство. А в ИЕ работает. Правильно будет:
window.location.href = 'string';
или
window.location.assign('string');
|
|
|
|
Раздаю инвайты, ищу линк-трейд
С нами с 20.08.04
Сообщения: 16687
Рейтинг: 8593
|
Добавлено: 30/06/06 в 11:52 |
Короче выше подредактировал - глянь - будет работать?
Ну href можно добавить для корректности, хотя мне кажется и так съестся
|
|
|
|
С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096
|
Добавлено: 30/06/06 в 12:03 |
странно, у меня если изначально задан src то потом яваскриптом изменить его не получается. Всмысле после смены src ифрейм не перегружает данные. Ну если у тебя работает, то варианты такие. Во-первых читал что по стандарту ссылки на объекты лучше получать не через document.frames[] и т.п., а через document.getElementById('id_of_element'). Я конечно точно не скажу, но может в фф просто document.frames[i] равен NULL?
Вобщем если учесть эти мои пожелания, то в результате должен получиться такой вариант:
document.getElementById('ifr').navigate('http://url');
и само собой ифрейму надо назначить id="ifr".
|
|
|
|
С нами с 29.07.03
Сообщения: 426
Рейтинг: 512
|
Добавлено: 30/06/06 в 12:06 |
pierx и Pentarh плюс по максимуму
огромный сенкс, все работает
|
|
|
|
С нами с 29.07.03
Сообщения: 426
Рейтинг: 512
|
Добавлено: 30/06/06 в 14:51 |
В продолжение темы: кто-нибудь представляет как можно получить доступ к объекту в iframe из основного окна.
parent.frames[i].objectName
опять таки работает только в ие и опере
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 30/06/06 в 15:36 |
Из основного окна.
Предполагается что ифрейм имеет id="frame1" :
<iframe id="frame1" ...>
Нужный нам обект располагается во фрейме и имеет ИД objectName:
<someobect id="objectName"...>
Код: |
oFrame=document.getElementById('frame1');
if (oFrame)
{
//ищем объект ифрейма
oObject=oFrame.document.getElementById('objectName');
if (oObject)
{
//Обращение к объекту, например, если это форма
if (oObject.tagName.toLowerCase() == 'form')
oObject.submit();
}
}
|
Это стандартная W3C DOM модель.
|
|
|
|
С нами с 29.07.03
Сообщения: 426
Рейтинг: 512
|
Добавлено: 03/07/06 в 10:46 |
Почти получилось, но что-то не то
вот код страницы в ифрейме page.htm
Код: |
<form id="frm" name="frm">
<input type="text" id="b1" name="b1" value="10">
<input type="text" id="b2" name="b2" value="11">
<input type="text" id="b3" name="b3" value="12">
<input type="text" id="b4" name="b4" value="13">
</form>
|
вот код основной страницы
Код: |
<iframe name="ti" id="ti" width="300" height="300" src="page.htm" frameborder="2"></iframe>
<script type="text/javascript">
oFrame=document.getElementById('ti');
if (oFrame)
{
//ищем объект ифрейма
document.write('ok-1');
oObject=oFrame.document.getElementById('b1');
if (oObject)
{
document.write('ok-2');
}
}
</script>
|
в общем в таком виде oFrame существует (ok-1 печатает), а oObject нет, подскажите где грабли, нужно получить b1.value
|
|
|
|
Раздаю инвайты, ищу линк-трейд
С нами с 20.08.04
Сообщения: 16687
Рейтинг: 8593
|
Добавлено: 03/07/06 в 11:26 |
Имхо - все верно - для родительской страницы есть объект ифрейм - и доступ можно получить только к нему - к его свойствам (align, contentDocument, frameBorder, height, id...), методам (blur(), focus()) и событиям (onBlur, onFocus) и все.
А объекты ифрема - это уже в штмл коде ифрейма обрабатывать.
Иначе дыр бы было еще больше - не уберегстись.
стандартная W3C DOM модель.
Скрипт же "видит" только код страницы - а там нет элементов в ифрейме - там только сам ифрейм
|
|
|
|
С нами с 29.07.03
Сообщения: 426
Рейтинг: 512
|
Добавлено: 03/07/06 в 12:07 |
всем спасибо, проблема решена
|
|
|
|