Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удалить iframe со страницы, сабж 
:(
    Опции темы
z-END
Дата 9.11.2007, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 4
Всего: 102



Приветствую!
посредством скрипта создается DIV в который помещается такое содержание
Код

function GenerateIFrame(title,Id,url) {
cont=document.createElement('DIV');
cont.id=Id;
cont.innerHTML='<div><h1>'+title+'</h1><iframe  name="_frame'+Id+'" src="'+url+'" ></iframe></div>';

document.getElementById('Desktop').appendChild(cont);
}

 
Схема работы такая:
на странице index.php выполняется скрипт который создает див1 с iframe как показано выше. 
в iframe  при нажатии на ссылку выполняется скрипт:
Код
window.parent.GenerateIFrame('dd','SubFrame','index2.php'); 

 который создает  див2 с iframe

Все дивы можно закрывать функцией:
Код

function CloseIFrame(Id) {
    obj=document.getElementById(Id);
    if (!obj) return;
    document.getElementById('Desktop').removeChild(obj);
}

А теперь к сути проблемы:
при выполнении некоторых действий в index2.php мне необходимо обновить iframe в див1 для чего я делаю следующее: (див2)
Код

 if (window.parent._frameid1) window.parent._frameid1.location=window.parent._frameid1.location;

Все работает до тех пор, пока я не выполняю функцию CloseIFrame для див1. 
а потом случается следующее:
window.parent._frameid1 так и не становится равным null  и попрежнему является [Object window]
тоесть насколько я понимаю удаляется только див, а сам iframe переходит в разряд бесплотных духов, которые сильно мешают жить, т.к. при повторном выполнении скрипта создающего див1 
функция обновления iframe1 из iframe2 не работает...
Как это можно побороть?

Это сообщение отредактировал(а) z-END - 9.11.2007, 00:17


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
dstorm81
Дата 9.11.2007, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

Репутация: 20
Всего: 39



removeChild(объект_узла)     

Этот метод удаляет дочерний элемент текущего узла.

может вам поможет replaceChild() он заменяет весь контейнер со всеми вложенными узлами

для ие есть какая штука как
removeNode()    NN n/a   IE5+
removeNode(флаг)     
 

Этот метод удаляет текущий узел из иерархии элементов в IE5+. Метод позволяет удалить объект узла со всеми дочерними узлами или без них (следует использовать с осторожностью).
Метод возвращает ссылку на удаляемый узел, который, хоть уже и не является частью иерархической структуры документа, но всё ещё находится в памяти броузера и может быть использован в сценарии.
 
Возвращаемое значение
Ссылка на объект Node
 
Параметры
флаг    Значение булевого типа, определяющее, удалить ли объект со всеми его дочерними узлами (true), или только сам объект (false).


Это сообщение отредактировал(а) dstorm81 - 9.11.2007, 14:03


--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
z-END
Дата 9.11.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 4
Всего: 102



Цитата(dstorm81 @  9.11.2007,  15:02 Найти цитируемый пост)
для ие есть какая штука как

он меня интересует меньше всегоsmile

Цитата(dstorm81 @  9.11.2007,  15:02 Найти цитируемый пост)
может вам поможет replaceChild() он заменяет весь контейнер со всеми вложенными узлами

наврядли, т.к. он сам в свою очередь сначала удаляет узел (если он присутсвует)

короче я в полном замешательстве...
в код закрытия дива такой код:
Код

    frm=document.getElementById('_frame'+Id);
    pfrm = frm.parentNode; 
    pfrm.removeChild(frm);  


тоесть я явно нахожу iframe и удаляю его, а результат прежний - window.parent._frameid1 так и не становится равным null  и попрежнему является [Object window]


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
SelenIT
Дата 9.11.2007, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Насколько мне известно, removeChild не сколько удаляет ноду физически, сколько "вырезает" ее из дерева документа (и возвращает для каких-либо дальнейших операций), так что вполне логично, что она продолжает храниться "где-то рядом" в глобальном объекте текущего окна. Если перед удалением дива обнулить его innerHTML, то iframe уничтожается наверняка - до состояния undefined, по крайней мере, по моим тестам...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
z-END
Дата 9.11.2007, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 4
Всего: 102



блин, даже после зануления у меня так и остается  [Object window] :(



--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
SelenIT
Дата 9.11.2007, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



z-END, я проверял вот так:
Код

<script>
function del() {
    var ob = document.getElementById('hehe');
    ob.innerHTML = ''; // без этого остается, а с этим - вроде нет...
    ob.parentNode.removeChild(ob);
}
</script>
<div id="hehe"><iframe src="2.html" name="fr"></iframe></div>
<input type="button" value="Проверить" onclick="alert(window.fr)">
<input type="button" value="Удалить" onclick="del()">

В FF2 и IE6 получается undefined...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
z-END
Дата 9.11.2007, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 4
Всего: 102



Код

<script>
function GenerateIFrame(title,Id,url) {
    cont=document.createElement('DIV');
    cont.id=Id;
    cont.innerHTML='<div><h1>'+title+'</h1><iframe  name="_frame'+Id+'" src="'+url+'" ></iframe></div>';
    document.getElementById('Desktop').appendChild(cont);
}

function CloseIFrame(Id) {
    obj=document.getElementById(Id);
    if (!obj) return;
    obj.innerHTML='';
    document.getElementById('Desktop').removeChild(obj);
}
function Check(){
alert(window._frameTEST1);
}
</script>
<div id="Desktop">AREA</div>
<input type="button" value="Проверить" onclick="Check();">
<input type="button" value="Удалить" onclick="CloseIFrame('TEST1')">
<script>
GenerateIFrame('Такого сайта нет','TEST1','http://test.ru');
</script>

А вот так не получается :(


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
dstorm81
Дата 15.11.2007, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

Репутация: 20
Всего: 39



если все еще актуально то может вот так сделать
Код

<html>
<head>
<script>
function GenerateIFrame(Id,url)
{
var    ifr=document.createElement('IFRAME');
    ifr.setAttribute("src",url);
    ifr.setAttribute("id",Id);
    document.getElementById('Desktop').appendChild(ifr);
}

function CloseIFrame(Id)
{
try{

    var obj=document.getElementById(Id);
    obj.parentNode.innerHTML='';
    }
catch(e){alert("ошибка")}
}

function Check(){alert(document.getElementById("TEST"))}
</script>
</head>
<body>
<div id="Desktop"></div>
<input type="button" value="Проверить" onclick="Check()">
<input type="button" value="Удалить" onclick="CloseIFrame('TEST')">
<script>
GenerateIFrame("TEST","file:///C:/2.html");
</script>
</body>
</html>
опера кмелеон осел = null



--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
z-END
Дата 15.11.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 4
Всего: 102



dstorm81 ага так действительно работает, но по условию iframe должен быть обязательно в диве. 


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
dstorm81
Дата 16.11.2007, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

Репутация: 20
Всего: 39



Код

<html>
<head>
<script>
function GenerateIFrame(Id,url)
{
var ndiv=document.createElement('DIV');
    document.getElementById('Desktop').appendChild(ndiv);
    ndiv.innerHTML='aa';
var    ifr=document.createElement('IFRAME');
    ifr.setAttribute("src",url);
    ifr.setAttribute("id",Id);
    ndiv.appendChild(ifr);
}

function CloseIFrame(Id)
{
try{

    var obj=document.getElementById(Id);
    obj.parentNode.innerHTML='';
    }
catch(e){alert("ошибка")}
}

function Check(){alert(document.getElementById("TEST"))}
</script>
</head>
<body>
<div id="Desktop"></div>
<input type="button" value="Проверить" onclick="Check()">
<input type="button" value="Удалить" onclick="CloseIFrame('TEST')">
<script>
GenerateIFrame("TEST","file:///C:/2.html");
</script>
</body>
</html>

а чем собственно проблема-то?
такой вариант имеет ифрэйм в шо.. в диве smile


--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0869 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.