Подтвердить что ты не робот

Что такое CavalryLogger и мне это нужно?

Я делаю некоторую оптимизацию на сайте Ive, недавно занятом. Я нашел script, я не знаю: http://static.ak.fbcdn.net/rsrc.php/zo/r/V95Lkt_uLNB.js

Это может быть вещь в facebook, и там происходит некоторая ключевая запись (что я не слишком увлекаюсь)

Это, без сомнения, самый большой файл, запрашиваемый при загрузке страницы (87kb), поэтому, если я могу обойтись без него, это действительно ускорит загрузку страницы.

Кто-нибудь знает:
A) Что это такое B) Что это для
C) Что он делает D) Могу ли я обойтись без него

4b9b3361

Ответ 1

Хорошо, поэтому я просмотрел улучшенную версию этого миниатюрного кода и отметил следующее:

Само по себе это куча полезных функций.

CavalryLogger ничего не делает с этим файлом сам по себе, потому что он не существует и не определен.

Код в вопросе о привязке клавиш:

function KeyEventController() {
  copy_properties(this, {
    handlers: {}
  });
  document.onkeyup = this.onkeyevent.bind(this, 'onkeyup');
  document.onkeydown = this.onkeyevent.bind(this, 'onkeydown');
  document.onkeypress = this.onkeyevent.bind(this, 'onkeypress');
}
copy_properties(KeyEventController, {
  instance: null,
  getInstance: function () {
    return KeyEventController.instance || (KeyEventController.instance = new KeyEventController());
  },
  defaultFilter: function (event, a) {
    event = $E(event);
    return KeyEventController.filterEventTypes(event, a) && KeyEventController.filterEventTargets(event, a) && KeyEventController.filterEventModifiers(event, a);
  },
  filterEventTypes: function (event, a) {
    if (a === 'onkeydown') return true;
    return false;
  },
  filterEventTargets: function (event, b) {
    var a = $E(event).getTarget();
    if (DOM.isNode(a, ['input', 'select', 'textarea', 'object', 'embed'])) if (a.type != 'checkbox' && a.type != 'radio' && a.type != 'submit') return false;
    return a.getAttribute('contentEditable') != 'true';
  },
  filterEventModifiers: function (event, a) {
    if (event.ctrlKey || event.altKey || event.metaKey || event.repeat) return false;
    return true;
  },
  registerKey: function (f, a, d, g) {
    if (d === undefined) d = KeyEventController.defaultFilter;
    var b = KeyEventController.getInstance();
    var c = b.mapKey(f);
    if (is_empty(b.handlers)) onleaveRegister(b.resetHandlers.bind(b));
    for (var e = 0; e < c.length; e++) {
      f = c[e];
      if (!b.handlers[f] || g) b.handlers[f] = [];
      b.handlers[f].push({
        callback: a,
        filter: d
      });
    }
  },
  keyCodeMap: {
    '[': [219],
    ']': [221],
    '`': [192],
    LEFT: [KEYS.LEFT, 63234],
    RIGHT: [KEYS.RIGHT, 63235],
    RETURN: [KEYS.RETURN],
    TAB: [KEYS.TAB],
    DOWN: [KEYS.DOWN, 63233],
    UP: [KEYS.UP, 63232],
    ESCAPE: [KEYS.ESC],
    BACKSPACE: [KEYS.BACKSPACE],
    DELETE: [KEYS.DELETE]
  }
});
copy_properties(KeyEventController.prototype, {
  mapKey: function (a) {
    if (typeof (a) == 'number') return [48 + a, 96 + a];
    if (KeyEventController.keyCodeMap[a.toUpperCase()]) return KeyEventController.keyCodeMap[a.toUpperCase()];
    var b = a.toUpperCase().charCodeAt(0);
    return [b];
  },
  onkeyevent: function (i, c) {
    c = $E(c);
    var d = null;
    var g = this.handlers[c.keyCode];
    var b, f, a;
    if (g) for (var h = 0; h < g.length; h++) {
      b = g[h].callback;
      f = g[h].filter;
      try {
        if (!f || f(c, i)) {
          var node = null;
          if (window.Parent && Parent.byTag && c.getTarget) node = Parent.byTag(c.getTarget(), 'a');
          user_action(node, 'key', c);
          a = b(c, i);
          if (a === false) return Event.kill(c);
        }
      } catch (e) {}
    }
    return true;
  },
  resetHandlers: function () {
    this.handlers = {};
  }
});

Этот код позволяет связывать ключи с обратными вызовами и включает в себя более понятные для человека имена для общих ключей. Возьмем, к примеру, использование здесь:

KeyEventController.registerKey('ESCAPE', Dialog._handleEscapeKey, a);

Ключ ESCAPE зарегистрирован, чтобы Dialogs исчезли. handlers также по умолчанию пуст, поэтому ничего не произойдет, пока вы не будете использовать registerKey или добавьте его вручную. Обратите внимание, что это единственный экземпляр registerKey, который вызывается.

В нем также много полезных функций AJAX. В любом случае, вы не можете отправлять что-либо в Facebook из своего домена из-за той же политики происхождения (если только вы не изменили разрешения безопасности, но тогда это ваша ошибка). То же самое с набором cookie.

Там также есть man man, но он использует iFrame, поэтому он не сможет прочитать его из вашего домена в любом случае.

Наконец, подобный код кнопки, который я нашел, является iFrame, поэтому ему не нужно включать JS, если вы не используете javascript для создания iFrame или чего-то еще.

Имея это в виду, я не вижу необходимости включать все это.

Ответ 2

Похоже, что это напрямую связано с тем, что на странице есть функция "Like this". В iframe, который вы используете для включения кнопки "Like", похоже, есть пара "бонусных" скриптов.

Если вы спросите меня, это еще одна веская причина, по которой НЕ интегрирован Facebook, похоже, это ввод в журнал нажатий, и это не круто.

Ответ 3

Быстрый поиск в Google не дает много ответов - это какое-то отслеживание событий script для Facebook, и я увидел твит и пару сообщений на форуме, на которых люди упоминали об отключении и повышении скорости - я подумайте, вы можете спокойно избавиться от него, по крайней мере, стоит попробовать.

Ответ 4

Это определенно из Facebook - один из многих поддерживающих файлов для FBML/API и т.д.

Если вы не используете какие-либо функции FB в своем проекте, просто удалите этот файл.

Если вы используете какие-либо функции FB (например, кнопку "Like" ), вы не должны использовать этот файл (или любые другие файлы с загадочными именами) напрямую. Вы должны вместо этого

1) создайте пустой <div id="fb-root"></div> где-нибудь в конце f вашей страницы

2) включают http://connect.facebook.net/en_US/all.js script на вашей странице

3) следуйте дальнейшим инструкциям http://developers.facebook.com/

Ответ 5

Когда IFRAME загружается, он вызывает следующий URI:

https://www.facebook.com/plugins/like.php?api_key=[your_api_key]&channel_url=http%3A%2F%2Fstatic.ak.facebook.com%2Fconnect%2Fxd_arbiter.php%3Fversion%3D27%23cb%3Df39f390d40f7332%26domain%3D[your_TLD]%26origin%3Dhttp%253A%252F%252F[your_TLD]%252Ff72f1f9bea899e%26relation%3Dparent.parent&colorscheme=light&extended_social_context=false&href=[your_share_URI]&layout=button_count&locale=en_US&node_type=link&sdk=joey&send=false&show_faces=false&width=100

В тегах script этой страницы отображаются следующие вызовы.

PluginAsyncLoader.load("**https:\/\/fbstatic-a.akamaihd.net\/rsrc.php\/v2\/yq\/r\/CNRdIwfy3yI.js**");
PluginAsyncLoader.ondemandjs = "**https:\/\/fbstatic-a.akamaihd.net\/rsrc.php\/v2\/yH\/r\/muz85bheueJ.js**";

Ответ 6

Я нашел "calverly logger" в файле, который я не загружал, но увидел, что он загрузился прямо передо мной, когда я закрыл Thunderbird (запустил Firefox за ним, и он появился там как загрузка файла), поэтому пошел проверьте, что это было.

Файл был вызван: "See All.html", который я нашел странным и тревожным.

глава файла содержит следующий код, указывающий, что это функция Facebook... В нижней части файла упоминается Calvery Logger (не показано здесь). Я удалил html < рядом с заголовком файла, чтобы вы могли видеть код... Не уверен, что это поможет, но с нетерпением ждем любых идей...

// !DOCTYPE html 
html lang="en" id="facebook" class="no_js"

head
meta charset="utf-8" />

meta name="referrer" content="origin-when-crossorigin" id="meta_referrer" />

script> window._cstart=+new Date();</script><script>function envFlush(a)    {function b(c){for(var d in a)c[d]=a[d];}if(window.requireLazy){window.requireLazy(['Env'],b);}else{window.Env=window.Env||{};b(window.Env);}}envFlush({"ajaxpipe_token":"AXiYOZarFarwOff3","lhsh":"AAQFK_mp-","khsh":"0`sj`e`rm`s-0fdu^gshdoer-0gc^eurf-3gc^eurf;1;enbtldou;fduDmdldourCxO`ld-2YLMIuuqSdptdru;qsnunuxqd;rdoe-0unjdojnx-0unjdojnx0-0gdubi^rdbsduOdv-0`sj`e`r-0q`xm`r-0StoRbs`qhof-0mhoj^q`xm`r","timeslice_heartbeat_config":{"pollIntervalMs":33,"idleGapThresholdMs":60,"ignoredTimesliceNames":{"requestAnimationFrame":true,"Event listenHandler mousemove":true,"Event listenHandler mouseover":true,"Event listenHandler mouseout":true,"Event listenHandler scroll":true},"enableOnRequire":true},"shouldLogCounters":false,"timeslice_categories":{"react_render":true,"reflow":true}}); script> style> style>