1

データを保存した後、拡張機能を自動的に閉じようとしています。

データを保存するために使用されるコードは次のとおりです。

$(function(){

    function  displayMessage(string){
        alert(string);
    }

    var submit = $('#submit');
    $('#create').submit(function(){
        $('#loading_image').html('<img src="images/wait.gif">');
        var user_email = localStorage.getItem('email');
        var api = localStorage.getItem("user_api_key");
        var auth = "apikey" +' ' +(user_email+":"+api);
        var favicon_key = localStorage.getItem("favicon_image_key");
        var peoples = [];
        var tags_peoples = $("#s2id_people .select2-choices .select2-search-choice");
        for (i=0; i<tags_peoples.length; i++) {
            peoples.push({"label": tags_peoples[i].childNodes[1].textContent})
        }
        var subjects = [];
        var tags_subjects = $("#s2id_subjects .select2-choices .select2-search-choice");
        for (i=0; i<tags_subjects.length;i++) {
            subjects.push({"label": tags_subjects[i].childNodes[1].textContent})
        }
        var places = [];
        var tags_places = $("#s2id_places .select2-choices .select2-search-choice");
        for (i=0; i<tags_places.length; i++) {
            places.push({"label": tags_places[i].childNodes[1].textContent})
        }
        var begin = $(".daterangepicker_start_input")[0].childNodes[1].value;
        var end = $(".daterangepicker_end_input")[0].childNodes[1].value;
        var data = {
            'content': $('#title').val(),
            'people': peoples,
            'subjects': subjects,
            'begin_date': begin,
            'end_date': end,
            'places': places
        }
        $.ajax({
            type: "POST",
            beforeSend: function(xhr) {
                xhr.setRequestHeader("Authorization", auth);
                xhr.setRequestHeader("Content-Type","application/json");
                xhr.setRequestHeader("Accept","application/json");
            },
            url: "https://my_site_url/api/v3/data/",
            dataType: "json",
            data: JSON.stringify(data),
            contentType: "application/json",
            success: function(data) {
                $('#loading_image').hide();
                window.location.href = 'saved.html';
                setTimeout(function(){
                    window.close();
                }, 2000);               
            },

            error: function(data) {
                $('#div1').text("Error on saving the data");
                $('#loading_image').hide();
            },
            complete: function() {
                submit.removeAttr('disabled').text('Save');
            }
        });

        return false;
    });
});

これを使用して拡張機能を閉じています

setTimeout(function(){window.close();}, 3000);

しかし、これはうまくいきません。拡張機能を自動的に閉じる EventListener を作成する必要がありますか?

答えを高く評価しました

4

1 に答える 1

1

コードの次のスニペットを検討してください。

window.location.href = 'saved.html';
setTimeout(function(){
  window.close();
}, 2000);

これは機能しません。場所を変更するとすぐに、ページは移動を開始し、最終的windowに新しいページの読み込み時に設定された状態とすべてのタイムアウトを消去します。

これを機能させるには、タイムアウトを設定する必要がありますsaved.html

于 2015-03-23T13:55:25.247 に答える