Javascript 如何在没有浏览器嗅探的情况下检测对iframe onload的支持?
我有一个网站,用户可以下载格式化的PDF文档或Excel记录文件。为了在没有回发的情况下实现这一点,我以编程方式创建了一个iframe,并将源设置为一个包含id和键的URL,以标识所需的数据。将显示一个微调器,指示正在下载。一旦ASP.NET处理程序处理完数据并且iframe收到结果,onload事件“应该”隐藏微调器Javascript 如何在没有浏览器嗅探的情况下检测对iframe onload的支持?,javascript,asp.net,iframe,Javascript,Asp.net,Iframe,我有一个网站,用户可以下载格式化的PDF文档或Excel记录文件。为了在没有回发的情况下实现这一点,我以编程方式创建了一个iframe,并将源设置为一个包含id和键的URL,以标识所需的数据。将显示一个微调器,指示正在下载。一旦ASP.NET处理程序处理完数据并且iframe收到结果,onload事件“应该”隐藏微调器 showSpinner(); var i = document.createElement("iframe"); var id = 2; var key = '123456789
showSpinner();
var i = document.createElement("iframe");
var id = 2;
var key = '1234567890abcd';
var fileType = 'pdf';
i.src = 'Download.ashx?Type=' + fileType + '&ID=' + id + '&Key=' + key;
$(i).on("load", function () { hideSpinner(); })
i.style.display = "none";
document.body.appendChild(i);
我还尝试在不使用jQuery或addEventListener的情况下添加onload事件,方法是使用
i.setAttribute("onload", "hideSpinner();");
这两种方法在Firefox和Chrome中都可以正常工作,但IE和Edge在这两种情况下都不会触发onload事件。我搜索了很多人,发现他们报告了类似的问题。尽管尝试了一些建议,但IE似乎并不喜欢这种事情
由于jQuery不赞成浏览器检测,并且不赞成用户代理嗅探,有没有一种更“可接受”的方法可以使用功能检测禁用微调器,而不必使用
if (/trident/i.test(navigator.userAgent)) hideSpinner();
或者,老实说,最好能收到关于如何解决iframe问题的任何建议。您尝试过这个吗?我没有看到过,但除非我遗漏了什么,否则我不确定它是否能够实现已经发生的事情之外的任何事。文件在IE中下载成功;数据准备好后不会触发的只是iframe加载事件。你尝试过吗?我没有看到,但除非我遗漏了什么,否则我不确定它是否实现了已经发生的事情之外的任何事情。文件在IE中下载成功;数据准备就绪后不会触发的只是iframe加载事件。