Ни одно из этих решений не помогло мне, так как я нахожусь в междоменном сценарии, создающем букмарклет, такой как Pinterest Pin It.
Я нашел шаблон букмарклета на GitHub https://gist.github.com/kn0ll/1020251, который решил проблему закрытия Iframe, посылая команду из него.
Так как я не могу получить доступ к любому элементу из родительского окна в IFrame, это сообщение может быть сделано только путем публикации событий между двумя окнами с помощью window.postMessage
Все эти шаги находятся на ссылке GitHub:
1- Вы должны вставить файл JS на родительскую страницу.
2- В этот файл, добавленный в родительский файл, добавьте окно списка событий
window.addEventListener('message', function(e) {
var someIframe = window.parent.document.getElementById('iframeid');
someIframe.parentNode.removeChild(window.parent.document.getElementById('iframeid'));
});
Этот слушатель будет обрабатывать закрытие и любое другое событие, которое вы пожелаете
3- На странице Iframe вы отправляете команду закрытия через postMessage:
$(this).trigger('post-message', [{
event: 'unload-bookmarklet'
}]);
Следуйте шаблону на https://gist.github.com/kn0ll/1020251 и все будет хорошо!
Надеюсь, это поможет,