在iframe的父窗口中设置变量

Nic*_*ard 44 javascript iframe events

我有一个带有嵌入式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');
    }
});
Run Code Online (Sandbox Code Playgroud)

Pet*_*ley 85

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

这意味着

var foo = 'bar';
Run Code Online (Sandbox Code Playgroud)

类似于

window.foo = 'bar';
Run Code Online (Sandbox Code Playgroud)

这意味着您可以读取可以获取引用的任何 window对象的全局范围.我们在这里也可以暗示的window隐含的用法.即使你没有明确地输入"窗口",它仍然在那里.

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

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

// set the global variable 'foo' in the parent global scope
parent.foo = 'bar';
Run Code Online (Sandbox Code Playgroud)

  • 不可以.外部文件采用它们所包含的文档范围. (4认同)
  • 我只是在嵌套的iframe中尝试过此方法,发现它可以用于:[code] window.top.jsVar = true //使用window.top转到顶级父窗体 (2认同)

Mar*_*rta 5

您还可以将其存储在 localStorage 中并从中读取和写入,前提是主文档和 iframe 共享相同的域。