JQuery в вашем пользовательском скрипте работает в отдельной среде от jQuery страницы .
Вам необходимо перехватить вызовы AJAX на странице , чтобы вы могли использовать (A) unsafeWindow
или (B) Inject свой сценарий.
(A) unsafeWindow
выглядит так:
unsafeWindow.$(document).ajaxSuccess(function(e, xhr) {
alert("ajax success hit!");
// I will do my other handling here
});
(B) Внедрение скрипта выглядит так:
function scriptWrapper () {
//--- Intercept Ajax
$('body').ajaxSuccess (
function (event, requestData) {
alert ("ajax success hit!");
doStuffWithAjax (requestData);
}
);
function doStuffWithAjax (requestData) {
console.log ('doStuffWithAjax: ', requestData.responseText);
}
//--- DO YOUR OTHER STUFF HERE.
console.log ('Doing stuff outside Ajax.');
}
function addJS_Node (text, s_URL, funcToRun) {
var D = document;
var scriptNode = D.createElement ('script');
scriptNode.type = "text/javascript";
if (text) scriptNode.textContent = text;
if (s_URL) scriptNode.src = s_URL;
if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + ')()';
var targ = D.getElementsByTagName('head')[0] || D.body || D.documentElement;
targ.appendChild (scriptNode);
}
addJS_Node (null, null, scriptWrapper);
Обратите внимание, что в обоих случаях вы должны иметь в виду, что данные не перетекают из области страницы обратно в область GM - будьте осторожны при смешивании двух .
Один обходной путь для передачи данных через песочницу можно найти в этом ответе .