我需要在打开XMLHttp连接(即)之前addEventListener侦听progress事件,但该方法返回已打开的xhr实例.如何覆盖它以正确添加侦听器?xhr.open()beforeSend
您可以在每个单独的呼叫中覆盖该xhr功能.这是记录在文档(感谢尼克!) .ajaxSetup$.ajax$.ajax
如果您想要始终执行此操作,您的代码可能看起来像这样(未经测试):
(function() {
var originalXhr = jQuery.ajaxSettings.xhr;
jQuery.ajaxSetup({
xhr: function() {
var req = originalXhr();
if (req) {
// Add your progress handler
}
return req;
}
});
})();
Run Code Online (Sandbox Code Playgroud)
...或者像这样(实例)仅针对特定请求:
$.ajax({
url: "path/to/resource",
xhr: function() {
var req = $.ajaxSettings.xhr();
if (req) {
// Add your handler here
}
return req;
}
});
Run Code Online (Sandbox Code Playgroud)
不幸的是,尽管记录了覆盖,但是xhr当前配置的one(jQuery.ajaxSettings.xhr)的位置似乎并不是,所以从技术上讲,您仍然依赖于jQuery.ajaxSettings.xhr在代码中使用的未记录的功能.你只需要仔细检查每个点发布时是否仍然存在,它可能不会过多地移动(jQuery.ajaxSettings至少在文档中提到,这里).
| 归档时间: |
|
| 查看次数: |
6837 次 |
| 最近记录: |