javascript - 从 iframe 在父窗口中设置变量

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

最佳答案

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

这意味着

var foo = 'bar';

类似于

window.foo = 'bar';

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

并且由于框架本身自动公开为当前window对象的DOM属性,这意味着您可以访问任何其他框架的window 对象也是如此。

window 对象的 parent 属性持有该窗口父级(如果有的话)的 window 对象的引用。因为 iframe 肯定有一个父窗口,所以我刚刚输入的所有这些东西都归结为这个

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

关于javascript - 从 iframe 在父窗口中设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1301540/

相关文章:

javascript - 基本事件监听器抛出错误 ('undefined is not a function' )

javascript - iframe onreadystatechange

javascript - 使用iframe嵌入有哪些陷阱

css - 溢出-y : scroll not working for iframe

javascript - 使用 Jquery 将 div 滑出视口(viewport)的滚动事件 - 不起作用

javascript - Sublime 3 JS 片段到 Typescript

javascript - Bootstrap 表格行格式化程序

javascript - 如何修改 JavaScript RegExp 模式

events - Backbone.js 查看 img onload

javascript - 委托(delegate)事件不适用于排序后的元素