Open ef4 opened 9 years ago
Would that be the cause of
new XMLHttpRequest() instanceof XMLHttpRequest; //false
?
I had some problems with it...
Yes, the extension strategy breaks that too.
I'm not sure this is the same issue, but I was working on a XMLHttpRequest methods reload and found that prototype is broken
console.log(XMLHttpRequest.prototype.send); // undefined
This may lead to incompatibility with custom code or other plugins, which rewrites the XMLHttpRequest prototype. This can be fixed by adding:
XMLHttpRequest.prototype = Object.getPrototypeOf(new XMLHttpRequest);
after pace.js was initialized:
console.log(XMLHttpRequest.prototype.send); // function send() { [native code] }
On the OpenToke custom service mentioned that this issue can be fixed by adding
to.prototype = Object.getPrototypeOf(new from);
before 375 line in the pace.js file.
See more: https://forums.tokbox.com/bugs/opentok-conflicts-with-pace-js-t46935
Is this fixed yet ? Same as @jesjobom new instances returns false.
bump
Really bad issue, this breaks all sorts of scripts in subtle and frustrating ways.
The use of this library hangs implementation based on XMLHttpRequests . My customer use this library in their website and this will broke my project. When it will be fixed? thanks.
Bump. It really conflicts with Symfony toolbar. No AJAX calls in the web profiler.
Thanks @ecolotko Effectively! That instruction before line 375, has worked for me. appInsight from Azure doesn't track why .send function() is replaced.
In case of using the version: pace.min.js, you only have to search for the statement:
:a[d]=b.prototype[d]:void 0)}catch(f){c=f}
Replace by:
:a[d]=b.prototype[d]:void 0)}catch(f){c=f}a.prototype = Object.getPrototypeOf(new b);
For those still working with bower, I suggest copying: pace.min.js (modified) and copying to an external route, and use: override.
Example:
Pace
"Main": [
"../../content/scripts/custom/pace.min.js",
]
}
Best regards.
Thanks @1antares1
Update for version 1.0.2, search for:
a[d]=b.prototype[d]):e.push(void 0)}catch(f){c=f}
Fixed the conflict with Symfony Profiler.
Any reason why this wasn't fixed so far? Do you need a pull request?
I think I tracked this down to the key
not being loop-localized in extendNative
here: https://github.com/HubSpot/pace/blob/master/pace.coffee#L296 , so all the XMLHttpRequests
property values end up as the value of the last-property-enumerated. I'll submit a PR, but it doesn't seem like there's anyone merging them for the last couple years.
CookiePro was also affected by this, which https://github.com/CodeByZach/pace/pull/504 successfully fixed. Good job! Maybe a new publish to NPM could be considered, since many use it from there to this day and the versions up there are very outdated.
When this library extends XMLHttpRequest here:
https://github.com/HubSpot/pace/blob/b202561ac0d5721a5df8d48dbf94f237c3d44405/pace.coffee#L343-L348
It doesn't bring along the properties of the XMLHttpRequest object itself. For example,
XMLHttpRequest.DONE
is supposed to be a constant, but after extension it's not.