导航

window  parent 属性

语法(parent属性返回当前窗口的父窗口)

window.parent 

也就是可以通过此属性可调用父页面的方法和属性,例如

window.parent.父页面方法()     //window.parent.parentFn();
window.parent.父页面属性       //window.parent.parentVar;

但是如果父页面引入jq并把方法和属性在写$(function(){ })中,那么问题就来了。例如

1、父页面写法如下

2、子页面写法如下

 此时调用父页面的变量为undefined,而且调用方法直接报错,如图

之所以导致错误的原因,主要还是$(function(){ })这个方法,因为在这个方法中定义的变量和方法并不是全局的。以下主要介绍以下$(function(){ })方法

$(function(){ })方法中定义的变量和方法其实是局部的,也就是在$(function(){ })形成了自己的局部作用域,类似与es6的 “{}”形成的块级作用域。分析代码如下

而在子页面调用的变量和方法是全局的(即属于window对象的),所以此时子页面调用父级的方法和属性在全局(window)并不存在,所以会报错。解决方法在父页面修改,将变量和方法放到全局(即挂在window上)代码如下

 或

 以上两种方法都可以解决之前子页面调用问题