如何在父页面上调用iframe子页面的js方法

JavaScript010

如何在父页面上调用iframe子页面的js方法,第1张

这个其实应该放在《多个iframe之间js的通信问题》文章里,但是由于已经写完了,所以就在这里暂且作为补充巴。上一篇文章中,我们说的通信,仅仅说了一个方面,就是访问双方的dom树节点。其实除了访问dom,还有访问js方法也是很重要的。

一、父页面访问iframe子页面的js方法

1)父页面

<iframe frameborder="0" name="myContentIframeName" id="myContentIframe"src="examples/completeDemo.html" style="width:99%height:600px"></iframe>

2)iframe页面

<script type="text/plain" id="editor" style="width:700px" >

</script>

<script type="text/javascript">

function getContent(){

var arr = []

arr.push("使用editor.getContent()方法可以获得编辑器的内容")

arr.push("内容为:")

arr.push(ue.getContent())

alert(arr.join("\n"))

return ue.getContent()

}

</script>

3)父页面调用iframe子页面js方法

var editor = window.frames["myContentIframeName"].getContent()

$("#lastContent").val(editor)

方法只有一种:

步骤:

1、获取iframe节点

2、获取iframe中的变量

示例

1

2

3

4

5

6

7

8

9

a.html

<iframe

id='x'

name='x'

src='b.html'/>

b.html

<script>

var

y='1'

</script>

在a.html中获取y,则可以通过以下方式

document.frames['x'].y

//先获取frame,在获取y

同域下可以这样实现

<!doctype html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="Generator" content="EditPlus®">

<meta name="Author" content="">

<meta name="Keywords" content="">

<meta name="Description" content="">

<title>Document</title>

</head>

<body>

<iframe id="test" frameborder=0 width=250 height=250 marginheight=0 marginwidth=0 scrolling=no src="a.html"></iframe>

<script type="text/javascript">

// 兼容IE事件绑定

function addEvent(elem, eventName, func) {

if (!elem) return

if (window.addEventListener) {

elem.addEventListener(eventName, func, false)

} else if (window.attachEvent) {

elem.attachEvent('on' + eventName, func)

}

}

function onKeyUp(e) {

e = e || window.event

var iframe = document.getElementById('test')

var keyCode = e.keyCode

if (keyCode === 13) {

iframe.contentWindow.location.reload()

}

}

addEvent(document.body, 'keyup', onKeyUp)

</script>

</body>

</html>