[1] Хорошо, я даже не знаю, как это назвать, если честно. Итак, позвольте мне получить некоторый полупсевдокод, чтобы показать, что я пытаюсь сделать. Я использую jQuery, чтобы получить уже существующий скрипт, объявленный внутри страницы, внутри элемента createDocument()
, из вызова AJAX.
GM_xmlhttprequest({
...
load:function(r){
var doc = document_from_string(r.responseText);
script_content = $('body script:regex(html, local_xw_sig)', doc).html();
var scriptEl = document.createElement('script');
scriptEl.type = 'text/javascript';
scriptEl.innerHTML = script_content; // good till here
(function(sc){
eval(sc.innerHTML); // not exactly like this, but you get the idea, errors
alert('wont get here ' + local_xw_sig); // local_xw_sig is a global "var" inside the source
})(scriptEl);
}
});
Пока все хорошо, скрипт действительно содержит источник из всего блока скрипта. Теперь, внутри этого «script_content», есть автоматически выполняемые функции, такие как $ (document) .ready (function () {...}), которые, все, что я «проверяю» на innerHTML, выполняет этот код, останавливая мой инкапсулированный скрипт , Как переменные, которые не существуют и т. Д.
Удаление некоторых частей скрипта с помощью регулярных выражений на самом деле не вариант ... что я действительно хотел, так это "пройтись" внутри функции. как сделать (полностью вымышленный):
script = eval("function(){" + script_content + "};");
alert(script['local_xw_sig']); // a03ucc34095cw3495
Есть ли способ «разобрать» функцию и быть в состоянии достичь «вар» внутри нее?
как эта функция:
function hello(){
var message = "hello";
}
alert(hello.message); // message = var inside the function
Возможно ли это вообще? Или мне придется взломать мой путь с помощью регулярных выражений? ; Р
[2] также, есть ли способ получить доступ к javascript внутри документа, созданного с помощью createDocument?