git.asbjorn.biz
/
jquery.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
4151dde
)
Make sure that Opera fires events after an aborted Ajax attempt. Fixes #5787.
author
jeresig
<jeresig@gmail.com>
Tue, 12 Jan 2010 15:31:51 +0000
(10:31 -0500)
committer
jeresig
<jeresig@gmail.com>
Tue, 12 Jan 2010 15:31:51 +0000
(10:31 -0500)
Makefile
patch
|
blob
|
history
src/ajax.js
patch
|
blob
|
history
diff --git
a/Makefile
b/Makefile
index
fdb57bd
..
9221e08
100644
(file)
--- a/
Makefile
+++ b/
Makefile
@@
-57,7
+57,7
@@
${JQ}: ${MODULES}
sed 's/Date:./&'"${DATE}"'/' | \
${VER} > ${JQ};
sed 's/Date:./&'"${DATE}"'/' | \
${VER} > ${JQ};
-selector: init
+selector:
@@echo "Building selector code from Sizzle"
@@sed '/EXPOSE/r src/sizzle-jquery.js' src/sizzle/sizzle.js > src/selector.js
@@echo "Building selector code from Sizzle"
@@sed '/EXPOSE/r src/sizzle-jquery.js' src/sizzle/sizzle.js > src/selector.js
diff --git
a/src/ajax.js
b/src/ajax.js
index
193a85a
..
07e706c
100644
(file)
--- a/
src/ajax.js
+++ b/
src/ajax.js
@@
-393,7
+393,9
@@
jQuery.extend({
// The request was aborted, clear the interval and decrement jQuery.active
if ( !xhr || xhr.readyState === 0 ) {
requestDone = true;
// The request was aborted, clear the interval and decrement jQuery.active
if ( !xhr || xhr.readyState === 0 ) {
requestDone = true;
- xhr.onreadystatechange = jQuery.noop;
+ if ( xhr ) {
+ xhr.onreadystatechange = jQuery.noop;
+ }
// Handle the global AJAX counter
if ( s.global && ! --jQuery.active ) {
// Handle the global AJAX counter
if ( s.global && ! --jQuery.active ) {
@@
-447,6
+449,22
@@
jQuery.extend({
}
};
}
};
+ // Override the abort handler, if we can (IE doesn't allow it, but that's OK)
+ // Opera doesn't fire onreadystatechange at all on abort
+ try {
+ var oldAbort = xhr.abort;
+ xhr.abort = function() {
+ oldAbort.call( xhr );
+ if ( xhr ) {
+ xhr.readyState = 0;
+ }
+ if ( !requestDone ) {
+ complete();
+ }
+ onreadystatechange();
+ };
+ } catch(e) { }
+
// Timeout checker
if ( s.async && s.timeout > 0 ) {
setTimeout(function() {
// Timeout checker
if ( s.async && s.timeout > 0 ) {
setTimeout(function() {