IE8 uyumluluk modunda çalışan bir intranet sitesi için maymun yama XMLHttpRequest.prototype.open
çalışıyorum ama SCRIPT438: Object doesn't support this property or method
atmaya devam ediyor. Garip olan şey, ilk olarak arguments
'a dokunursam, yani, bar
uncomment'ına dokunursak, gayet iyi çalışıyor! Neden olduğunu bilen var mı, eğer dokunup dokunursanız, sorunun% 100'ünde gerçekten sorunu çözüyor mu?XMLHttpRequest.prototype.open ve bağımsız değişkenlere "dokunmak" Maymun yama
var foo = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function() {
//var bar = arguments;
foo.apply(this, arguments);
console.log("OK");
}
İşte bir maymun kaydırma üzerinde isteği yamalı open
çalışırken Google Görsel arama ile IE9 IE8 modunda modern.ie VM ekran görüntüsü var.
Düzenleme:
console.log(foo);
//console.log(foo.apply);
console.log(typeof foo);
console.log(foo instanceof Function);
İade
LOG:
function open() {
[native code]
}
LOG: object
LOG: false
console.log(foo.apply)
bir "Object doesn't support this property or method"
atar.
Gerçekten, IE8 standart modunda çalışan IE9'da denediğim herhangi bir modda bunu gerçek bir IE8 VM'de kopyalayamıyorum.
Bir "console.log (foo, foo.apply, foo foo, foo instanceof Function)" yapabilir misiniz? Benim tahminim budur. .apply (bu, argümanlar), 'dahili olarak en iyi duruma getirilmiş, ama '' dokunmadan '' argümanlar' * * argüman nesnesinin açık yaratılmasını gerektirir. Ve Quentin'in bulduğu olası kopyadan da görebileceğiniz gibi, IE eklenti nesnelerinin "yöntemleri" hakkında çok tuhaftır. – Bergi
@Bergi teşekkürler, lütfen günlük getirileri için düzenlemeye bakın. –
* * .apply'a erişirken bile * atar? Vay. Ama evet, bunun gibi bir şey korktuğum şey. Function.prototype.apply.call (foo, arguments) 'bir geçici çözüm olarak mı çalışıyor? – Bergi