Удалить DIV из дочернего IFRAME (кросс-домен) - PullRequest
2 голосов
/ 10 сентября 2011

Я работаю над букмарклетом, который загружает Javascript с моего сервера.JS добавляет div со встроенным iframe (чтобы я мог передавать / загружать контент из моего собственного домена).

Я не могу понять, как удалить элемент DIV, включая iframe, изнутри iframe.Я не могу сослаться на window.parent, потому что это междоменный домен.window.postMessage похоже, что это правильная идея, но я не нашел достаточной документации, которая бы помогла мне понять это.

Я бы очень хотел, чтобы кнопка iframe close находилась внутрифреймПомощь приветствуется.

РЕДАКТИРОВАТЬ: В моей попытке использовать window.postMessage я попытался создать прослушиватель событий с букмарклетом (ergo, на любом домене):

var receiveMessage = function(event) {
    $("#iframecontainerdiv").remove();
    console.log (event);
    alert (event.origin);
}
window.addEventListener("message", receiveMessage, false);

И затемвнутри фрейма я попытался вызвать его:

$("#abort").click( function(e) {
    e.preventDefault();
    window.close();
    window.postMessage("Hello, World!", "*");
});

Я не уверен, правильно ли я поступлю ...

1 Ответ

1 голос
/ 10 сентября 2011

Я думаю, вы отправляете сообщение не в то окно.Возможно, вам следует использовать window.top.postMessage, чтобы отправить сообщение с указанием верхнего окна удалить iframe.

Итак:

var receiveMessage = function(event) {
    if ("close-iframe" == event.data) {
        $("#iframecontainerdiv").remove();
    }
    console.log (event);
    alert (event.origin);
}
window.addEventListener("message", receiveMessage, false);

и:

$("#abort").click(function(e) {
    e.preventDefault();
    window.top.postMessage("close-iframe", "*");
});

При желании вы можете проверить происхождение сообщения, чтобы только сообщения из вашего домена приводили к удалению iframe.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...