Как вы можете позвонить GM_xmlhttpRequest
внутри eval
, где вы eval
вводите какой-то сложный код, некоторые из которых вызывают GM_xmlhttpRequest
.
Это продолжение до Выполнить GM_xmlhttpRequest () из eval
Вот пример кода:
// ==UserScript==
// @name Test GM AJAX
// ==/UserScript==
console = unsafeWindow.console;
function fetch(msg) {
console.log('fetching: '+msg);
GM_xmlhttpRequest({
method: 'GET',
url: 'http://google.com',
onload: function(responseDetails) {
console.log(msg);
}
});
}
function complicated(arg1, arg2) {
fetch(arg1 + arg2);
}
console.log('trying');
var code = 'complicated("Ya", "y!")';
function myEval(code) {
eval(code);
eval('setTimeout(function(){'+code+'},0)');
eval('setTimeout(fetch,0)');
eval('setTimeout(function(){console.log("here");fetch("cool")},0)');
fetch("BOO");
}
myEval(code);
который выводит:
trying
fetching: Yay!
fetching: BOO
fetching: Yay!
fetching: 30
here
fetching: cool
BOO
30
Таким образом, единственной сработавшей выборкой был setTimeout(fetch,0)
, но мне нужно на самом деле выполнить code
, который включает в себя сложный код.
Есть идеи?