我有一个页面,在某个操作上使 iframe 可见并用一些 HTML 填充 iframe(例如,多选框和确定按钮)。
iframe 上的 OK 按钮的 onClick 方法定义如下:
onClick="parent.hideIFrame();parent.processMultiSelectBox();"
当用户在 iframe 上单击“确定”时(大概是在玩了多选框之后),我希望 iFrame 立即消失,然后可以处理多选框中的选定值。但这不是正在发生的事情。iFrame 在其他函数运行期间保持可见,并且仅在第二个函数完成后消失。
hideIFrame 函数非常简单:
function hideIFrame() {
frmObj = document.all.iFrameID;
if(frmObj) {
frmObj.style.visibility = "hidden";
}
}
为了清楚起见,我已经解释了上述函数(删除了一些指标变量分配等)
第二个函数实际上循环了多选对象中的所有选项并对其进行处理。这大约需要半秒钟,只有在完成之后,我的 iFrame 才会消失。单击确定时看到它徘徊半秒钟有点麻烦。
我的问题是是否有某种方法可以让这该死的东西更快地消失。用“经典的 C”术语来说,是否有“冲洗”让可见性的变化立即发生?
我确实注意到,如果我将“警报”作为第二个函数的第一行,iframe 会立即消失,但现在警报框上的 OK 会在第二个函数完成所需的时间内徘徊。
谢谢。
编辑:根据 DDaviesBrackett 的回答,这就是我最终要做的:
iframe 中的 onclick 更改为:
onClick="parent.hideAndProcessMultiSelectBox(parm1, parm2);"
hideAndProcessMultiSelectBox 函数定义为:
function hideAndProcessMultiSelectBox( parm1, parm2 ) {
hideIFrame();
setTimeout( function() { processMultiSelectBox( parm1, parm2 ); }, 0 );
}
瞧..没有延迟..