У меня есть пользовательский скрипт (для chrome и FF), который добавляет значительную функциональность к странице, но недавно был сломан, потому что разработчики добавили на страницу немного AJAX. Я хотел бы изменить скрипт для прослушивания запросов страниц xmlhttp, чтобы я мог динамически обновлять добавленное содержимое на основе формата JSON responseText
, который получает страница.
Поиск обнаружил множество функций, которые ДОЛЖНЫ работать и работают при запуске в консоли. Однако они ничего не делают из контекста пользовательского скрипта.
(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);
От: Как мне перехватить запросы XMLHttp из скрипта Greasemonkey?
Это прекрасно работает в консоли, я могу изменить this.readyState
на this.responseText
, и это прекрасно работает (хотя в скрипте мне понадобится это, чтобы превратить данные JSON в объект, а затем позвольте мне манипулировать ими внутри usercript. Не просто пиши в консоль). Однако, если я вставлю его в скрипт пользователя, ничего не произойдет. Похоже, что запросы xmlhttp на странице не обнаруживаются обработчиком событий в пользовательском сценарии.
Страница, выполняющая запрос, использует функцию jquery $ .get (), если это может иметь какое-либо отношение к ней. Хотя я не думаю, что это так.
Я не могу себе представить, что нет способа, похоже, что любой пользовательский скрипт, работающий на странице AJAX, хотел бы эту возможность.