Я пытаюсь переопределить метод addEventListener
объекта Element кросс-браузерным способом. Цель состоит в том, чтобы я мог асинхронно загружать некоторые сторонние сценарии, и эти сценарии вызывают этот метод преждевременно.
Я создал файл HTML, который отлично работает в Chrome, но в Firefox я получаю следующее исключение:
«Недопустимая операция с объектом-прототипом WrappedNative» nsresult: «0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)"
Если вы закомментируете строки в файле, которые изменяют методы INSTANCE, это работает. Но мне нужно сделать это на «типе класса» (то есть прототипе).
Любые предложения будут оценены.
Спасибо,
Guypo
Вот файл, который я создал
<html><body>
<img id="testImg" src="http://www.blaze.io/wp-content/themes/Blaze/images/header_logoB.png">
<script>
function myLog(msg) { "undefined" != typeof(console) && console.log("Log: " + msg); }
function customListener(type, event, useCapture) {
// Register the event
myLog('Registering event');
this._origListener.apply(this, arguments);
}
// Also tried HTMLImageElement
Element.prototype._origListener = Element.prototype.addEventListener;
Element.prototype.addEventListener = customListener;
var img = document.getElementById("testImg");
// Uncommenting these lines works - but in the real case I can't access these objects
//img._origListener = img.addEventListener;
//img.addEventListener = customListener;
img.addEventListener('load',function() { myLog('load callback'); }, false);
</script>
</body>
</html>