隐藏的iframe onload事件

时间:2012-09-13 16:18:19

标签: javascript iframe javascript-events

我在这里看到了一些关于iframe onload的类似问题,但没有什么对我有用。

我有一个隐藏的iframe,我只使用它来下载在我的服务器上动态创建的pdf。当用户单击按钮时,通过指向控制器/操作以及查询参数字符串在我的服务器上创建pdf。

这很有效。但是,我显示一个微调器并在按下此按钮时禁用UI('BlockAndSpin'功能)。我想在下载pdf时将hide隐藏为微调器并重新启用ui。

在Chrome和FF中调试时,我的onload方法永远不会被点击。我还尝试将onload属性添加到iframe本身,但这也不起作用。文件下载,但UI保持不变,并且onload事件不会触发。

JS

function downloadPOS(id) {
    var ifrm = document.getElementById(id)
    BlockAndSpin(true);
    ifrm.src = "/staticPOS/AddOrDownload" + GetPosQueryString();
    ifrm.onload = function () {
        BlockAndSpin(false);
    }
}

HTML

<iframe id="dlFrame" onload="BlockAndSpin(false);" style="display: none"></iframe>

显然这不可能。我的回答是用户下载的.pdf并没有将任何内容加载到iframe本身,因此它永远不会触发事件。我将不得不重新开始这样做。

1 个答案:

答案 0 :(得分:0)

我遇到了一个附加到隐藏iframe上的消息的类似问题。 IE似乎不喜欢与“隐藏”(display:none)iframe进行跨域通信。

我的解决方法是将iframe设置为绝对位置,左侧值为-9999px。然后它被有效隐藏,你可以附加到它。