Задача моего пользователя довольно проста - прослушивать XHR-запросы с помощью функции XHR-моста, манипулировать полученными данными и возвращать их обратно. Все происходит прозрачно, конечно.Неисправность перехвата запросов AJAX (XHR) из сценария GreaseMonkey
Я наткнулся на этот ответ How can I intercept XMLHttpRequests from a Greasemonkey script? на SO - который обеспечивает следующий код-фрагмент:
(function(open) {
XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {
this.addEventListener("readystatechange", function() {
console.log(this.readyState);
}, false);
open.call(this, method, url, async, user, pass);
};
})(XMLHttpRequest.prototype.open);
код работает, как ожидалось при нажатии через FireBug. Однако он ничего не делает в сценарии Greasemonkey.
В дальнейших поисках, я наткнулся на другой ответ: how intercept xhr with greasemonkey - в которой говорится, что:
Greasmonkey и Firefox 3.x в настоящее время не поддерживает «прототип» -свойство. Пожалуйста, смотрите следующий билет для получения дополнительной информации: http://greasemonkey.devjavu.com/ticket/164
У меня есть два основных запросов:
- Распространяется ли это Fx v3.5.x также? (Примечание: билет на devjavu.com недоступен)
- Что означает подпись
(function(){})()
в Javascript. (Просьба нести, я не эксперт в продвинутых JS).
В дополнение к ответу Tomasz (в к Q # 2), вот указатель для других: http://www.hunlock.com/blogs/Functional_Javascript#quickIDX5 – Jumper