Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как внутри фрейма можно удалить этот фрейм? (https://javascript.ru/forum/misc/63591-kak-vnutri-frejjma-mozhno-udalit-ehtot-frejjm.html)

Untropee 16.06.2016 17:59

Как внутри фрейма можно удалить этот фрейм?
 
Собственно вот такой вопрос... Есть такой фрейм, как при нажатии на div можно удалить этот фрейм? Желательно с jquery если есть такая возможность. $("#map_frame").remove() естественно не помогает, мы у родителя...

<iframe id="map_frame" width="1000" height="621">

<html>
<head>
</head>
<body>

<div onclick="alert('хочу удалить фрейм map_frame')"></div>

</body>
</html>

</iframe>

Deff 17.06.2016 07:40

Untropee,
Если топ страница не с того ж домена, что и фрейм, - то ничего низзя сделать, (если вы не можете установить скрипты на обоих доменах... Тогда команду на удаление можно передать top-скрипту, к примеру через postMessage)

Можно еще средиректить ссылку на топ страницу из фрейма(если известен её адрес, но велосипед кривой, ибо вдруг пользователь занят на top странице чем то Важным... - полный краш
Собственно а в чем состоит причина удаления ? И зачем был нужен этот фрейм ?
Если визуальность фрейма изначально была не важна, скрыть его изначально, а по окончании действий , очистить внутри фрейма контент и забыть про него

Dilettante_Pro 17.06.2016 11:07

Untropee,

<html>
<head>
</head>
<body>

<div onclick="alert('хочу удалить фрейм map_frame'); window.top.document.getElementById('map_frame').remove();" style="width:100px;height:100px;background-color:Gray"></div>

</body>
</html>

Основная страница и iframe в одном домене

Untropee 17.06.2016 16:29

Всё будет на одном домене. Но пока тест чисто с компьютера, пишет:

Uncaught SecurityError: Blocked a frame with origin "null" from accessing a frame with origin "null". Protocols, domains, and ports must match.

Видимо надо на сервер переносить, чтобы проверить

Untropee 17.06.2016 16:54

На сервере всё получилось! Спасибо


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