为什么更改XMLHttpRequest会破坏FB?

时间:2016-11-15 20:32:54

标签: javascript facebook

如果你转到fb或fb / messages /并运行此代码(在控制台中复制/粘贴或使用用户脚本),页面消息就会出现。特别是聊天窗口无法加载,链接无法正常工作,您无法点击中间按钮并随之滚动(鼠标滚轮仍可正常工作)并向上滚动聊天不会加载之前的聊天

我希望下面的代码没有任何改变。据我所知,它应该以完全相同的方式调用设置为XMLHttpRequest.prototype.open的任何内容。为什么这段代码会破坏Facebook?

// ==UserScript==
// @name        Test
// @namespace   mytest
// @include     https://*.facebook.com/*
// @version     1
// @grant       none
// ==/UserScript==

(function(open) {

    XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {
        return open.call(this, method, url, async, user, pass);
    };

})(XMLHttpRequest.prototype.open);

1 个答案:

答案 0 :(得分:1)

我希望这是因为你传递“this”作为要绑定的对象,它不是原始的XMLHttpRequest对象,而是在函数定义中在作用域中创建的临时对象。所以它应该不起作用。您可以尝试创建一个临时的XMLHttpRequest对象并将其传递给它,这应该可以工作。