Как работает встроенная отправка формы на странице запросов Facebook - PullRequest
4 голосов
/ 23 июля 2011

Я пишу букмарклет, чтобы упростить мою жизнь при обработке множества запросов на 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, который заинтересован в том, чтобы раскрыть эту тайну, и объяснит, какони это делают?

1 Ответ

1 голос
/ 23 июля 2011

не имеет значения, что он возвращает, главное, что делает эта функция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...