मैं बंदर पैच XMLHttpRequest.prototype.open
को आईएन 8 संगतता मोड में चल रहे इंट्रानेट साइट के लिए बंदरगाह पैच करने की कोशिश कर रहा हूं लेकिन यह SCRIPT438: Object doesn't support this property or method
फेंकता रहता है। अजीब चीज है ... अगर मैं arguments
पहले "स्पर्श" करता हूं, यानी bar
को अपूर्ण करें, यह ठीक काम करता है! क्या किसी को पता है कि क्यों और अगर इसे छूना वास्तव में 100% मामलों में समस्या का समाधान करता है?बंदरगाह XMLHttpRequest.prototype.open और "स्पर्श" तर्क
var foo = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function() {
//var bar = arguments;
foo.apply(this, arguments);
console.log("OK");
}
यहाँ IE9 IE8 में मोड modern.ie वीएम गूगल छवि खोज के साथ open
करने की कोशिश कर स्क्रीनशॉट एक बंदर स्क्रॉल पर समझौता अनुरोध है।
संपादित करें:
console.log(foo);
//console.log(foo.apply);
console.log(typeof foo);
console.log(foo instanceof Function);
रिटर्न
LOG:
function open() {
[native code]
}
LOG: object
LOG: false
console.log(foo.apply)
एक फेंकता "Object doesn't support this property or method"
।
खुशी से पर्याप्त मैं इसे किसी भी मोड में वास्तविक आईई 8 वीएम में दोहराने नहीं कर सकता, केवल IE9 मानकों मोड में चल रहे IE9 में।
क्या आप 'console.log (foo, foo.apply, typeof foo, foo exampleof Function) कर सकते हैं? शायद? मेरा अनुमान होगा कि '.apply (यह, तर्क);' आंतरिक रूप से अनुकूलित किया गया है, लेकिन "तर्क" स्पर्श करने के लिए * एक तर्क वस्तु के स्पष्ट निर्माण की आवश्यकता है। और जैसा कि आप क्वांटिन पाए गए संभावित डुप्लिकेट से देख सकते हैं, आईई प्लगइन ऑब्जेक्ट्स के "विधियों" के बारे में बहुत क्विंकी है। – Bergi
@ बर्गि धन्यवाद, कृपया लॉग रिटर्न के लिए संपादन देखें। –
यहां तक कि * * * .apply' तक पहुंचने पर भी यह फेंकता है? वाह। लेकिन हाँ, ऐसा कुछ है जो मुझे डर था। क्या 'function.prototype.apply.call (foo, arguments)' वर्कअराउंड के रूप में काम करता है? – Bergi