这在我的IE8用户中造成了一些悲伤。是什么导致IE8阻止某些文件下载?
在我的网站上,我通过php脚本启动了文件下载(file_download.php?file = X123)。 在此页面中,它将一些数据记录到数据库,然后使用标题强制下载。此页面上的所有内容似乎都能在所有浏览器上正常运行。
它是如何称呼这个页面,似乎给我的烦人小“为了帮助保护您的安全 - Internet Explorer已阻止网站下载文件到您的计算机”。
如果我使用常规href标记<a href="/file_download.php?file=X123">download</a>
它启动正确(没有IE阻止的下载消息)。
但是,当我启动使用jQuery脚本它给了我这个警告。
所以我想IE8可能会对javascript重定向产生怀疑,所以我在本地页面上做了一个简单的JS函数,但是它没有任何问题。
所以看来jQuery可能是罪魁祸首......是因为window.location事件是从另一个页面或脚本源调用的吗?有谁知道这是如何工作的?
我会继续测试,但现在,任何人都可以在这个问题上发光一些?要求用户调整他们的IE设置不是一种选择。
感谢
-------- jQuery代码--------------
jQuery("a").click(function(e){
if(jQuery(this).attr("href") !== undefined){
downloadLink = jQuery(this).attr("href");
thingClicked = jQuery(this);
dll_io = downloadLink.indexOf("/file_download.php?file_id=");
dll_io2 = downloadLink.indexOf("/file_download_safe.php?file_id=");
if(dll_io == 0 || dll_io2 == 0){
e.preventDefault();
jQuery.getScript("/includes/get_login.php?file_id=" + downloadLink + "&dll_io=" + dll_io + "&dll_io2=" + dll_io2 + "&last_url=" + document.URL, function(rp){
//get_login.php sets 'requested_dl_id' cookie
if(dll_io2 == 0){
window.location = downloadLink;
}else{
if(rp == "allow"){
window.location = downloadLink;
}else{
jQuery("#download_prompt").click();
}
}//end condition: if file_download_safe -> set cookie and send to page. IF file_download -> set cookie and decide to prompt or not.
});
}//end if fd == file_download.php
}//end only execute code if 'a' has a defined 'href' attribute
});
---- ----更新
我现在已经对自己进行了足够的了解,以了解这个问题的原因 - 但没有简单的解决方案。原因是IE7会自动阻止从非用户事件启动的下载。所以一个onclick事件将启动一个下载,但不是一个jQuery脚本。仍在寻找解决方法。
+1只是为了单纯的第一线...... – jeroen 2012-03-29 01:32:35
你能张贴的可疑代码? – 2012-03-29 01:36:02
您是否正在加载托管在您的域名上的jQuery的副本,或者您是否将其从不同的域名(如CDN)中提取? – 2012-03-29 02:30:33