Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在没有浏览器嗅探的情况下检测对iframe onload的支持?_Javascript_Asp.net_Iframe - Fatal编程技术网

Javascript 如何在没有浏览器嗅探的情况下检测对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

我有一个网站,用户可以下载格式化的PDF文档或Excel记录文件。为了在没有回发的情况下实现这一点,我以编程方式创建了一个iframe,并将源设置为一个包含id和键的URL,以标识所需的数据。将显示一个微调器,指示正在下载。一旦ASP.NET处理程序处理完数据并且iframe收到结果,onload事件“应该”隐藏微调器

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加载事件。