Подтвердить что ты не робот

Установить переменную в родительском окне из iframe

У меня есть родительский документ со встроенным iframe. Внутри iframe у меня есть поле для загрузки. Когда пользователь выбирает файл для загрузки, я запускаю событие изменения jQuery. В этом случае я хочу установить переменную в родительском окне в значение true, чтобы родитель знал, что загрузка началась.

Кто-нибудь знает, как это сделать?

Пробовал это, но не работал:

var test;
$("#newsletter_email").change(function() {
  parent.window.test = true;

});

$('#send').click(function() {
    if (test) {
        alert('File has been uploaded!');
    } else {
        alert('You need to upload a file');
    }
});
4b9b3361

Ответ 1

Переменные в глобальной области автоматически экспонируются как свойства DOM их содержащего объект window.

Это означает, что

var foo = 'bar';

аналогично

window.foo = 'bar';

Это означает, что вы можете прочитать глобальную область любого объекта window, на который вы можете получить ссылку. Здесь мы также можем подразумевать, что использование window неявно. Даже когда вы явно не вводите "окно", оно все равно.

И поскольку сами кадры также автоматически отображаются как свойства DOM текущего объекта window, это означает, что вы также можете получить доступ к любому другому объекту window.

Свойство parent объектов window содержит ссылку на объект window этого родителя окна (если таковой имеется). Поскольку iframe, безусловно, имеет родительское окно, тогда все эти вещи, которые я только что напечатал, сводятся к этому

// set the global variable 'foo' in the parent global scope
parent.foo = 'bar';

Ответ 2

Вы также можете сохранить его в localStorage и прочитать и записать из него, при условии, что как основной документ, так и iframe используют один и тот же домен.