我正在尝试实现jquery.FileDownload插件,该插件允许使用iframe通常无法实现类似Ajax的文件下载体验。然而,我使用这个插件的事实并不是我的问题的必要条件。这是关于代码中断点的一般性问题。
在这种情况下,这是我的代码:
function generateReport(elementId, data, url) {
var $container = $(elementId);
$.fileDownload(url, {
httpMethod: 'POST',
data: data,
successCallback: function (url) {
$container.toggle('slow');
},
failCallback: function (responseHtml, url) {
$container.find('.error-message').removeClass('hide');
}
});
return false;
}
当AJAX调用成功时,调用successCallback
并且一切正常。当请求中发生故障时,failCallback
被调用,我无法访问$ container中的任何元素。我收到一个“权限被拒绝”错误,这可能表明由于iframe而导致可访问性正在发生。
在任何一种情况下,在调试此问题时,我在$.fileDownload()
行的浏览器调试器中添加了一个断点。当我在这一行中断任何时间时,$ container及其所有包含的元素都可以访问,我没有得到“Permission denied”错误。当我在与url
方法传递的$.fileDownload
对应的服务器端方法中中断任何时间时,也会出现这种情况。
这让我觉得IE中的这个插件存在时间/线程问题。为了重新创建阻止我的调试器中发生错误的延迟,我尝试分别在javascript和服务器端代码中使用setTimeout()
和Thread.Sleep()
,但这仍然导致“权限被拒绝”错误
与在代码中手动添加延迟相比,与调试器中断有什么不同?