我正在写一个书签,让我的生活更容易管理我每天从我的垃圾邮件朋友那里得到的大量Facebook请求。 我知道我可以阻止应用程序或其他东西,但这不是我想要的。我想管理它们,即“全部接受”或“全部忽略”按钮。
为了做到这一点,我必须了解Facebook如何通过“接受”按钮和“x”/忽略按钮从用户那里获取点击操作。这是我使用Firebug的形式。
<form onsubmit="return Event.__inlineSubmit(this,event)"
style="grouped"
data-gt="<some json data>"
method="post"
action="/ajax/reqs.php"
rel="async">
...
<input type="submit"
id="<some id>"
data-gt="<some json data>"
name="actions[<some data>]"
value="Accept">
<input type="submit"
id="u942605_47"
name="actions[reject]"
value="">
...
</form>
我不明白的是,事件._ inlineSubmit()将返回null。我使用jsbeautifier.org来最小化他们的js文件并加载解压缩版本,因此它会覆盖最小化版本,这使我更容易使用Firebug进行调试。 我不明白他们如何在不刷新页面的情况下提交表单,如果不是事件的话。 _inlineSubmit();看下面的函数定义。它没有做任何事情。 我甚至尝试从表单中删除onsubmit属性,然后单击忽略按钮,它仍然发出POST请求。我不认为他们使用AJAX,但我可能错了。
这是Event .__ inlineSubmit()定义。变量a和document.documentElement.attachEvent为null。如果你不介意的话,自己调试一下。
Event.__inlineSubmit = function (b, event) {
var a = Event.__getHandler && Event.__getHandler(b, 'submit');
return a ? null : Event.__bubbleSubmit(b, event);
};
Event.__bubbleSubmit = function (a, event) {
if (document.documentElement.attachEvent) {
var b;
while (b !== false && (a = a.parentNode)) {
b = a.onsubmit ? a.onsubmit(event) : Event.__fire && Event.__fire(a, 'submit', event);
}
return b;
}
};
这是Event.getHandler()定义
__getHandler: function (g, h) {
return DataStore.get(g, Event.DATASTORE_KEY + h);
}
有兴趣剥离这个谜团并解释他们是如何做到这一点的任何Javascript专家吗?
答案 0 :(得分:1)
它返回什么并不重要,主要是,该功能做了什么。