js中 windwo{fnName] 是啥操作i啊?

JavaScript017

js中 windwo{fnName] 是啥操作i啊?,第1张

这是js中函数调用的一种写法

比如以下代码

function test1(){

alert(1)

}

function test2(){

alert(2)

}

var funcName=="test1"

if(userId=='zhangsan'){

funcName="test2"

}

window[funcName].apply()

首先理解,window[funcName]的概念,所有的顶层函数,都可以理解为window的一个方法,window[funcName]则可以访问到该方法,apply就是执行这个方法。

1、iframe子页面调用父页面js函数

子页面调用父页面函数只需要写上window.praent就可以了。比如调用a()函数,就写成:

代码如下:

window.parent.a()

子页面取父页面中的标签中的值,比如该标签的id为“test”,则:

代码如下:

window.parent.document.getElementById("test").value

jQuery方法为:

$(window.parent.document).contents().find("test").val()

但是我在chrome浏览器下却发现此方法无效了!查了半天才了解,在chrome 5+中,window.parent无法在file://协议中运行,但是发布了之后http://协议下是可以运行的。此方法支持ie、firefox浏览器。

2、iframe父页面调用子页面js函数

代码如下:

这个就稍微复杂一些,下面的方法支持ie和firefox浏览器:

document.getElementById('ifrtest').contentWindow.b()

子页面取父页面中的标签中的值,比如该标签的id为“test”,则:

document.getElementById("test").value

注:ifrtest是iframe框架的id,b()为子页面js函数。contentWindow属性是指定的frame或者iframe所在的window对象,IE下可以省略。