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/