我在这里看到了一些关于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本身,因此它永远不会触发事件。我将不得不重新开始这样做。
答案 0 :(得分:0)
我遇到了一个附加到隐藏iframe上的消息的类似问题。 IE似乎不喜欢与“隐藏”(display:none)iframe进行跨域通信。
我的解决方法是将iframe设置为绝对位置,左侧值为-9999px。然后它被有效隐藏,你可以附加到它。