【发布时间】:2012-06-20 17:25:45
【问题描述】:
我想根据网站上发生的事情编写脚本生成器,为此我编写了基于 javascript - ajax 的脚本生成器,在每个页面上我都包含 js 文件和页面所在页面的功能块提交后我调用了javascript的函数,通过getElementsByTagName(*)开始读取页面变量(DOM),并在循环之后,使用ajax将预定义的格式写入文件。
这一切都是为运行它的同一个站点完成的,但是现在当我需要为任何其他站点实现与在网站上完成的记录和脚本生成器一样的操作并登录到文件时,我也不能包含我的脚本到任何其他外部网站,也不在提交之前调用函数以读取 dom 并放入文件中。
这里是 js 的虚拟代码
beginRecording();
function beginRecording()
{
if(RECORD_BIT == 1)
{
processPageData();
}
}
function processPageData()
{
var i
var obj = document
var posArray = new Array();
var allElement = obj.getElementsByTagName("*");
var dataArrayString = "";
for(i=0; i < allElement.length; i++)
{
if (allElement[i].getAttribute('id') != null && allElement[i].getAttribute('id') != "")
{
posArray[posArray.length] = allElement[i].getAttribute('id');
}
}
for(i = 0 ; i < posArray.length ; i++)
{
dataArrayString = dataArrayString+"SET "+posArray[i]+"="+getValueFromPage(posArray[i]);
}
writePostData(dataArrayString);
}
函数 writePostData,通过记录 DOM 元素上的内容来执行 ajax 并在服务器上写入/更新文件,我发送了一些更详细的信息,例如 GET/POST 或页面名称等。
beginRecording() 在 javascript 作为 document.forms[0].submit() 提交之前在页面上调用,以便捕获 POST。
我阅读了有关跨域 ajax 的信息,但我仍然不确定如何监控任何外部网站的 HTTP(读取 GET / POST 和页面或 URL 上的数据)而不将我的脚本添加到该文件中,并写入文件
任何帮助或指导都会很棒。
【问题讨论】:
-
听起来你应该写一个浏览器插件而不是一个网页。
-
嗨 Epascarello,感谢您的建议,我能够使用能够捕获获取和发布的 crossrider 创建浏览器插件,并且在使用 activex 的 IE 上,我能够将捕获写入文件。在 yahoo 和其他平台上测试,只需将它们添加到受信任的站点,这是可以接受的。但是,如果页面有框架集,比如页眉/正文/页脚,并且页脚正在对正文执行一些操作,我无法在框架集中捕获框架的帖子?我可以使用javascript捕获它吗,我尝试使用 self.frames.count 然后 parent.frames[index].document.location.href ,但仍然无法捕获它。
标签: javascript ajax cross-domain http-request http-monitor