Я пишу букмарклет, чтобы упростить мою жизнь при обработке множества запросов на Facebook, которые я получаю каждый день от своих спам-друзей.Я знаю, что могу просто заблокировать приложение или что-то еще, но это не то, что я хочу.Я хочу управлять ими, т. Е. Иметь кнопку «принять все» или «игнорировать все».
Чтобы сделать это, я должен понять, как Facebook выполняет действие, связанное с кликом пользователя, на кнопке «Принять» и«х» / кнопка игнорирования.Это форма, которую я получаю с помощью 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>
Что я не понимаю, так это то, что Event ._ inlineSubmit () вернет ноль.Я использую jsbeautifier.org для минимизации их js-файлов и загрузки распакованной версии, поэтому она перезаписывает свернутую версию, что упрощает отладку с помощью Firebug.Я не понимаю, как они отправляют форму, не обновляя страницу, если это не событие Event. _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, который заинтересован в том, чтобы раскрыть эту тайну, и объяснит, какони это делают?