如何使XMLHttpRequest使用标准语法执行GM_xmlhttpRequest?

时间:2016-08-04 21:46:49

标签: javascript

我试图做一些奇怪的事情。我正在开发一个机器人,它可以帮助您快速查明新Stack Overflow Documents站点上的剽窃行为。它是一个用户脚本。 User scipts have special JS functions

机器人的意思是通过打开一个文档页面,以30个字块的形式阅读每个文档,打开Goog​​le标签,然后执行逐字搜索并将任何结果报告回SO标签,机器人可以帮助您编辑引用来源的文件,如果引用的内容太多,则标记它。

但是,当然,我不能以通常的方式在SO和Google标签之间进行通信(由于跨域政策)所以我走了一条奇怪的路线:我使用了特殊的GM功能GM_xmlhttpRequest来加载Google在SO标签中(GM_xmlhttpRequest忽略相同的原始政策),将页面放在iframe中,然后从那里进行搜索。我认为这种方法可行,但有一个障碍:

问题在于,当您在Google iframe中执行搜索时,Google的搜索请求将从http://stackoverflow.com/域发送,而不是Google.com。我可以在Google的代码中找到这些请求并将其更改为指定http://www.google.com,但之后我们会再次遇到相同的原始政策限制。所以我想用XMLHttpRequest替换窗口的GM_xmlhttpRequest方法,我们可以很容易地做到这一点,但这两个函数的语法不同:

XMLHttpRequest的工作原理如下:

var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", "http://www.example.org/example.txt");
oReq.send();

GM_xmlhttpRequest的工作原理如下:

GM_xmlhttpRequest({
    method: "GET",
    url: "https://www.google.com",
    headers: {
        "User-Agent": "Mozilla/5.0",
        "Accept": "text/xml"
    },
    onload: function(response) {
    }
});

我的问题是:

如何以这样的方式打包GM_xmlhttpRequest以便用XMLHttpRequest替换XMLHttpRequest并使用div { position: relative; } ul { text-indent: .6em; border-left: 1px solid red; } ul ul { margin-top: -1.25em; margin-left: 1em; } li { position: relative; bottom: -1.25em; } li:before { content: ""; display: inline-block; width: 2em; height: 0; position: relative; left: -.75em; border-top: 1px solid gray; } ul ul:before, h3:before, li:after { content: ''; display: block; width: 1em; height: 1em; position: absolute; background: salmon; border: 1px solid green; top: 1em; left: .4em; } h3 { position: absolute; top: -1em; left: 1.75em; } h3:before { left: -2.25em; top: .5em; }的任何脚本继续工作?

0 个答案:

没有答案