在iframe的父窗口中设置变量

时间:2009-08-19 17:48:55

标签: javascript events 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');
    }
});

2 个答案:

答案 0 :(得分:84)

全局范围中的变量自动公开为包含window对象的DOM属性。

这意味着

var foo = 'bar';

类似于

window.foo = 'bar';

这意味着您可以阅读任何 window对象的全局范围,您可以获取对它的引用。我们在这里也可以暗示window的使用是隐含的。即使你没有明确地输入“window。”,它仍然存在。

由于帧本身自动公开为当前window对象的DOM属性,这意味着您也可以访问任何其他帧“window对象。

parent个对象的window属性包含该窗口父级的window对象的引用(如果有的话)。由于iframe肯定有一个父窗口,所以我输入的所有这些内容归结为这个

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

答案 1 :(得分:3)

如果主文档和iframe共享同一个域,您也可以将其存储在localStorage中并从中进行读写。