[1] 好吧,老实说,我什至不知道如何称呼它。所以让我得到一些半伪代码,以展示我正在尝试做的事情。createDocument()
我正在使用 jQuery从 AJAX 调用中获取在页面内、元素内声明的现有脚本。
GM_xmlhttprequest({ ... 加载:函数(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 = '文本/javascript'; scriptEl.innerHTML = script_content; // 到这里为止 (函数(sc){ 评估(sc.innerHTML);// 不完全像这样,但你明白了,错误 alert('不会到这里' + local_xw_sig); // local_xw_sig 是源内部的全局“var” })(scriptEl); } });
到目前为止一切顺利,脚本确实包含来自整个脚本块的源代码。现在,在这个“script_content”里面,有自动执行的函数,比如 $(document).ready(function(){...}) ,我“评估”innerHTML的所有东西,它执行这段代码,停止我封装的脚本. 比如不存在的变量等等。
使用正则表达式删除脚本的某些部分并不是一个真正的选择......我真正想要的是在函数内部“行走”。就像做一个(完全虚构的):
script = eval("function(){" + script_content + "};"); 警报(脚本['local_xw_sig']);// a03ucc34095cw3495
有什么方法可以“反汇编”函数,并能够访问其中的“var”?像这个功能:
函数你好(){ var message = "你好"; } 警报(你好。消息);// 函数内部的 message = var
有可能吗?或者我将不得不使用正则表达式破解我的方式?;P
[2] 另外,有什么方法可以访问使用“createDocument”创建的文档中的 javascript?