0

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

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

这很好用。但是,当他们按下此按钮(“BlockAndSpin”功能)时,我会显示一个微调器并禁用 UI。我想在下载 pdf 后打开隐藏微调器并重新启用 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 本身中,因此它永远不会触发事件。我将不得不重新审视这是如何完成的。

4

1 回答 1

0

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

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

于 2013-02-12T23:59:46.700 回答