Javascript перезагрузить страницу в функции закрытия / анона? - PullRequest
0 голосов
/ 04 августа 2010

Я использую jQuery для анимации некоторых элементов DOM, но я хочу, чтобы страница перезагрузилась после завершения анимации, поэтому я попытался это сделать:

function childDisablePopup()
{
    $("#popup2",window.parent.document).animate({
        width: "0px",
        marginLeft: 0
    }, "fast",
    function()
    {
        $("#popup2",window.parent.document).animate({
            height: "0px",
            marginTop: 0
        }, "fast",
        function()
        {
            $("#backgroundPopup",window.parent.document).fadeOut("fast",
                function()
                {
                    $("#popup2",window.parent.document).remove();
                    window.location.reload(true);
                });
        });
    });
}

Однако, когда анимация завершается, вместопри перезагрузке страницы я получаю эту ошибку:

необработанное исключение: [Exception ... »Компонент возвратил код ошибки: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMLocation.reload]« nsresult: расположение «0x80004005 (NS_ERROR_FAILURE)»: "JS frame :: etc ...]

Что происходит? Не может ли перезагрузка страницы быть закрытой функцией () {}?

Примечание: Браузер: firefox3.6.8.

Браузеры для аудитории: Firefox 3+, Chrome, Safari 5 +

Примечание: я также пытался window.location.reload(true);, который возвращал ту же ошибку, и я пытался window.location.href=window.location.href, который возвращал:

необработанное исключение: [Exception ... »Компонент возвратил код ошибки: 0x80004003 (NS_ERROR_INVALID_POINTER) [nsIDOMLocation.href]« nsresult: «расположение 0x80004003 (NS_ERROR_INVALID_PIN):«:...]

Ответы [ 3 ]

3 голосов
/ 04 августа 2010

window.location.reload() не принимает никаких аргументов и, в отличие от вызова функции JavaScript, при вызове функции API браузера браузер очень строг в отношении количества аргументов, которые могут / должны быть переданы функции.

РЕДАКТИРОВАТЬ: Благодаря OP для указания на это, Firefox по крайней мере позволяет один параметр для передачи в reload (). (см. http://developer.mozilla.org/en/window.location)

0 голосов
/ 03 августа 2011

У меня была точно такая же проблема. Я решил это, вызывая код только тогда, когда страница была загружена. Для меня оба приведенных ниже сценария сработали.

window.addEventListener ("DOMContentLoaded", doStuff, false);

и

window.addEventListener ("load", doStuff, false);

Если оба варианта работают для вас, предпочтите первый.

0 голосов
/ 05 августа 2010

Проблема решена.Что я делал, так это открывал iframe, а затем удалял его.Я хотел вызвать перезагрузку страницы при удалении iframe, однако сценарий запускается из WITHIN iframe, поэтому, когда iframe больше не существует, сценарий больше не имеет контекста для запуска.По сути, я не могу вызвать window.location, когда окно даже не существует!Однако window.parent.location также не работает, поскольку после исчезновения iframe я фактически вызываю null.parent, которого тоже не существует.

Хахаха, наверное, мне придется изменитьсядизайн немного.Спасибо, ребята!

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