Make sure that Opera fires events after an aborted Ajax attempt. Fixes #5787.
This commit is contained in:
parent
4151ddef9d
commit
7afe6dcc08
2
Makefile
2
Makefile
|
@ -57,7 +57,7 @@ ${JQ}: ${MODULES}
|
||||||
sed 's/Date:./&'"${DATE}"'/' | \
|
sed 's/Date:./&'"${DATE}"'/' | \
|
||||||
${VER} > ${JQ};
|
${VER} > ${JQ};
|
||||||
|
|
||||||
selector: init
|
selector:
|
||||||
@@echo "Building selector code from Sizzle"
|
@@echo "Building selector code from Sizzle"
|
||||||
@@sed '/EXPOSE/r src/sizzle-jquery.js' src/sizzle/sizzle.js > src/selector.js
|
@@sed '/EXPOSE/r src/sizzle-jquery.js' src/sizzle/sizzle.js > src/selector.js
|
||||||
|
|
||||||
|
|
20
src/ajax.js
20
src/ajax.js
|
@ -393,7 +393,9 @@ jQuery.extend({
|
||||||
// The request was aborted, clear the interval and decrement jQuery.active
|
// The request was aborted, clear the interval and decrement jQuery.active
|
||||||
if ( !xhr || xhr.readyState === 0 ) {
|
if ( !xhr || xhr.readyState === 0 ) {
|
||||||
requestDone = true;
|
requestDone = true;
|
||||||
xhr.onreadystatechange = jQuery.noop;
|
if ( xhr ) {
|
||||||
|
xhr.onreadystatechange = jQuery.noop;
|
||||||
|
}
|
||||||
|
|
||||||
// Handle the global AJAX counter
|
// Handle the global AJAX counter
|
||||||
if ( s.global && ! --jQuery.active ) {
|
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
|
// Timeout checker
|
||||||
if ( s.async && s.timeout > 0 ) {
|
if ( s.async && s.timeout > 0 ) {
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
|
|
Loading…
Reference in a new issue