Закрыть букмарклет после отправки формы

Я сделал букмарклет. Это содержит 2 div (overlay и div для iframe) и iframe. В этом iframe я загружаю страницу, чтобы кто-то мог получить изображения с этого URL-адреса и сохранить их в базе данных. Когда изображение будет сохранено, я хочу закрыть букмарклет.

Мой букмарклет js:

 (function(){

var v = "1.3.2";

if (window.jQuery === undefined || window.jQuery.fn.jquery < v) {
    var done = false;
    var script = document.createElement("script");
    script.src = "http://ajax.googleapis.com/ajax/libs/jquery/" + v + "/jquery.min.js";
    script.onload = script.onreadystatechange = function(){
        if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
            done = true;
            initMyBookmarklet();
        }
    };
    document.getElementsByTagName("head")[0].appendChild(script);
} else {
    initMyBookmarklet();
}

function initMyBookmarklet() {
    (window.myBookmarklet = function() {

        if ($("#wikiframe").length == 0) {
            var s = window.location.href;
            if ((s != "") && (s != null)) {
                $("body").append("\
                <div id='wikiframe'>\
                    <div id='wikiframe_veil' style=''></div>\
                    <iframe src='http://test.itemmized.com/iframe.php?&search="+s+"' onload=\"$('#wikiframe iframe').slideDown(500);\" scrolling='no'>Enable iFrames.</iframe>\
                    \
                </div>");
                $("#wikiframe_veil").fadeIn(750);
            }
        } else {
            $("#wikiframe_veil").fadeOut(750);
            $("#wikiframe iframe").slideUp(500);
            setTimeout("$('#wikiframe').remove()", 750);
        }
        $("#wikiframe_veil").click(function(event){
            $("#wikiframe_veil").fadeOut(750);
            $("#wikiframe iframe").slideUp(500);
            setTimeout("$('#wikiframe').remove()", 750);
        });
    })();
}

 })();

function after ajax call inside the iframe:

 function myresult1(result) {
var result_lines = result.split("");    
if (result_lines[0] == '1') { 
    $("#loading").html('').fadeOut(250);
    $('#content_error').html(result_lines[1]).fadeIn(250);
    $('#content_error').delay(1500).fadeOut(500);
} else if (result_lines[0] == '2') { 
    $("#loading").html('').fadeOut(250);
    $('#content_success').html(result_lines[1]).fadeIn(250);
    $('#content_success').delay(1500).fadeOut(500);
    $('#form_url').attr('value', '');
    $('#url_result').delay(500).fadeOut(500);
}
return true;   

so when the function is called after the ajax call, I want to close the 2 div's (including the iframe). How can I do this with jquery?

0
nl ja de

1 ответы

Решил его с помощью windows.top.postMessage:

Я добавил это в bookmarklet.js:

            var receiveMessage = function(event) {
            if ("close-iframe" == event.data) {
                $("#wikiframe_veil").fadeOut(750);
                $("#wikiframe iframe").slideUp(500);
                setTimeout("$('#wikiframe').remove()", 750);
            }
        }
        window.addEventListener("message", receiveMessage, false);

и это к iframe:

            setTimeout(function() { window.top.postMessage("close-iframe", "*");}, 2500);
1
добавлено
Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda