twitter調査殴り書き(随時更新予定)

twitterのjs周りやらはとても面白い&参考になりそうなので殴り書きしていく(予定)

使用しているjsライブラリ

Sizzle
Sizzle CSS Selector Engine
easyXDM

jQuery UI 1.8.4
jQuery UI Widget 1.8.4
jQuery UI Mouse 1.8.4
mustache
Modernizr


https://si2.twimg.com/sticky/base.19.bundle.js

https://si3.twimg.com/a/1305667400/javascripts/phoenix_plugins.bundle.js



twitterのjsを見てみると分かるが、jQueryを使用しているがネイティブのjsをガリガリ書いている部分が多数ある。

どうゆう風に使い分けているか要調査。

トップページのjsはheadタグ内にゴリゴリとjsを記述しているのは、httpリクエスト回数を減らす為だろうと予測。


ユーザー毎に提供サービスの有無を切り分けているAPI?

ドキュメントに載ってないAPI
https://apigee.com/console/apigee-console-snapshots-1288587600000_a3bc87c7-7684-42ac-9fa7-de2e58cb9cb5/rendersnapshotview

ブラウザから通信している。
http://twitter.com/account/available_features

japanese_ad_componentというパラメーターがあるが、英語と日本の広告は別扱いにしている可能性がある。(そりゃそうだ)

js考察

  if (!window.console) {
    (function() {
      var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
      "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
      window.console = {};
      for (var i = 0; i < names.length; ++i) {
        window.console[names[i]] = function() {};
      }
    }());
  }
    jQuery.ajax = function (options) {
      jQuery.each(['complete', 'error', 'success'], function (which, key) {
        if (!options[key]) {
          return;
        }
        options[key] = WATCH.callback(options[key]);
      });

      return WATCH._originalJQueryAjax.apply(this, arguments);
    };
function bust () {
  document.write = "";
  window.top.location = window.self.location;
  setTimeout(function() {
    document.body.innerHTML = '';
    }, 0);
  window.self.onload = function(evt) {
    document.body.innerHTML = '';
  };
}
if (window.top !== window.self) { // are you trying to put self in an iframe?
  try {
    if (window.top.location.host) { // this is illegal to access unless you share a non-spoofable document domain
      // fun times
    } else {
      bust(); // chrome executes this
    }
  } catch (ex) {
    bust(); // everyone executes this
  }
}
  function createIFrame(complete) {
    var frag = document.createElement('div');
    frag.innerHTML = '<iframe tabindex="-1" role="presentation" style="position:absolute;top:-9999px;" src="' + pReceiverURL + '"></iframe>';

    var iframe = frag.firstChild;
    var fnComplete = function() {
      complete.apply(iframe, arguments);
    };

    iframe.addEventListener ? iframe.addEventListener('load', fnComplete, false) : iframe.attachEvent('onload', fnComplete);

    //  Avoid "operation aborted" error in IE that can be caused by
    //  appending a new element to the body via body.appendChild
    //  by a script that is not a direct descendant of the <body>.
    document.body.insertBefore(iframe, document.body.firstChild);

    return iframe;
  }

メモ

using function
60秒おきに通信される情報はなんなのか?要調査。


[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/