设置断点会改变代码的行为

时间:2014-03-06 16:35:55

标签: javascript debugging javascript-debugger

我正在尝试实现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(),但这仍然导致“权限被拒绝”错误

与在代码中手动添加延迟相比,与调试器中断有什么不同?

0 个答案:

没有答案