javascript:在写入之前等待iframe页面加载(但不是从触发加载的页面)

时间:2009-09-23 08:31:59

标签: javascript iframe

道歉,如果这已在其他地方得到解答,但我未能找到它被引用。 (可能是因为没有其他人会想做这么愚蠢的事情,我承认)。

所以,我有一个页面,里面有三个iframe。一个事件触发一个javascript函数,它将新页面加载到另外两个iframe中; ['topright']和['bottomright']。

然而,正在加载到iframe'topright'的页面中的javascript需要将信息发送到'bottomright'iframe中的元素。

window.frames ['bottomright']。document.subform.ID_client = client; 等

但是这只有在页面完全加载到底部框架中时才有效。那么,对于'topright'iframe中的代码最有效的方法是检查并确保底层框架中的表单元素在写入之前实际可以写入?请记住,页面加载尚未从顶部框架触发,因此我不能简单地使用onLoad函数。

(我知道这可能听起来像是从一个页面到另一个页面获取数据的可怕曲折途径,但这是另一个故事。客户端总是正确的等等......: - ))

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,并且您控制了所有帧的内容,并且所有帧内容都来自同一个域,则可以在onload帧上触发bottomright事件topright提取数据,而不是尝试推送

bottomright甚至可以调用topright中的函数并要求推送数据(在我看来它仍然是 pull )。

这样的事情:

// topright
function pushData(frame, form, name, value) {
    frame.document.forms[form].elements[name] = value;
}

// bottomright
window.onload = function () {
    top.frames['topright'].pushData(window, 'sub_form', 'ID_client', 'client');
}

未测试。我不是100%肯定从window传递bottomright会有效,在这种情况下,这可能是另一种选择:

// topright
function pushData(frame, form, name, value) {
    top.frames[frame].document.forms[form].elements[name] = value;
}

// bottomright
window.onload = function () {
    top.frames['topright'].pushData('bottomright', 'sub_form', 'ID_client', 'client');
}