从父窗口调用iframe中的函数

Invoking a function in an iframe from the parent window

本文关键字:函数 iframe 调用 窗口      更新时间:2023-09-26

我不明白我做错了什么。

我正在建立一个没有服务器端的网站我有一个带有iframe的主页面,点击一个按钮,我想更改iframe中的src,并用传递的参数调用其中的一个函数。

由于某些原因,未调用该函数。

这是我的代码:

iframe:

<iframe id="main_area_frame" name="main_area_frame" src="" frameborder="0" width="100%"     height="100%"></iframe>

onclick函数:

function onSubMenuClick(images)
{
    //Set Images Frame
    main_area = document.getElementById("main_area_frame");
    main_area.src = "ImagesFrame.html";
    main_area.contentWindow.initializeImages(images);
}

iframe(ImagesFrame.html(中的函数:

function initializeImages(imagesStr) 
{
    alert("initializeImages");
    ...
}

我注意到一些奇怪的事情是

在main_area.contentWindow.initializeImages(图像(之前添加警报时;该函数以某种方式被成功调用。

如果我从一开始就设置iframe的src,并跳过行main_area.src="ImagesFrame.html";-函数再次被调用。

有什么想法吗?

不确定这是否是原因,但我会尝试在之间设置延迟(睡眠(

main_area.src = "ImagesFrame.html";

main_area.contentWindow.initializeImages(images);

以便允许iframe被渲染(我不知道它是由同一帧渲染的,还是浏览器启动了一个新帧(。

只有我的两美分。

在负载处理。例如,(替换funcName(:

在子iframe中,编辑body标记(或使用等效的javascript(

  <body onload='top.funcName = funcName'>

在父页面中,编辑javascript;现在funcName通常可以访问为,
value = top.funcName( )