ウィンドウを拡大して「劇場」のサイズを変更すると、画像のサイズが変更されます。このことから、「劇場」が特定のサイズに設定され、画像が最大幅または最大高さになるように設定されているため、外側の要素(劇場)のサイズに合わせて拡大または縮小すると想定できます。 。この部分はCSSで行われます。
画面サイズの検出は、DOMDimensions( http://pastebin.com/Biz9ntMj)とDimensionTracking(http://pastebin.com/Ys72APyL)関数と関係があると思います。また、クリックは「primer」(https://gist.github.com/376039)スクリプトによってインターセプトされ、AsyncRequest(必要な場合)を介してアクションをルーティングし、JOSN応答に応じて反応します。私の画面サイズは、リンクと最終画像(_n.jpg)の両方に対して1つのサイズしか表示しませんが、javascriptによって処理されているかのように、それ以外の場合(javascriptがオフまたは何か)それは、1つのサイズが720 x 960のすべてに適合するという彼らの最良の推測に戻り、次に上記のようにcssを使用してサイジングを強制します。
編集
CSSについて...
CSSを使用すると、画像を含むブロック要素に高さ(画面サイズに固有または相対的なもの)を設定し、その画像をmax-height/width
定義された高さ/幅ではなくそのように設定できます。そうすれば、画像はアスペクト比を維持しながら、コンテナ内で許可されたサイズまで拡大および縮小します。この例はここで見ることができます:http://jsfiddle.net/tV6gG
javascriptで...
ページ上で何かがクリックされると(そしてjavascriptが実行されると)、それは上記の「primer」スクリプトを介してキャッチされます(完全なバージョンはここで見ることができます-http://pastebin.com/BwhKJ14d)- (これに関する詳細については、http://www.facebook.com/video/video.php?v = 596368660334&ref = mfを参照してください)。次に、このスクリプトはクリックイベントの属性をチェックしrel
(28行目を参照)、その属性に基づいて「ブートロード」する対象を決定します(52行目を参照)。ここから、すべての画像の種類を処理する関数(http://pastebin.com/eGgtz4dT )の獣をロードします。
このスクリプトには、画像サイズと関係があるように見える関数がいくつかあります。1つはgetCurrentImageServerSizeDimensionsです(218行目を参照)。ステージのサイジングについては他にもありますが、それも重要ではないと思います。私の知る限り、このスクリプトは大量のデータをコンパイルし、通常のhrefとは異なるサーバーへの呼び出しを行います。
ソースからエスケープされていないhref:
http://www.facebook.com/photo.phpfbid=10152228292295554&
set=t.516587895&type=3&src=http://sphotos-g.ak.fbcdn.net/hphotos-ak-
snc7/374008_10152228292295554_643067794_n.jpg&size=720,960&theater
ページレットに送信されたエスケープされていない実際のリクエスト(ページレットの詳細については、BigPipeに関する上記のビデオを参照してください)メーカー:
http://www.facebook.com/ajax/pagelet/generic.php/PhotoViewerInitPagelet?
ajaxpipe=1&ajaxpipe_token=AXhGMa1SEXnChIug&no_script_path=1&data=
{"fbid":"10152228292295554","set":"t.516587895","type":"3",
"size":"720,960","theater":null,"firstLoad":true,"ssid":1354797924833}
&__user=6462456246&__a=1&__adt=2
それらにはほとんど同じ情報が含まれていますが、リクエストがキャッチされていることを明確に確認できるため、(必要に応じて)修正された情報(画像サイズ)を送信できます。
以前のスクリプトに関して...
DOMDimensionsスクリプトは、関数のタイトル(、、、、および)によって非常によく説明されている関数getElementDimensions
のコレクションです。これらの個々の関数が実際に何をするかについての詳細は、それらを調べて、取得できない基本的なjavascript関数を確認することをお勧めします。それほど複雑には見えません。
DimensionTrackingスクリプトは、ページで生成されたデータを呼び出して保存しているようです。
ウィンドウのサイズ変更(18行目を参照)またはウィンドウフォーカス(18行目を参照)で、100ミリ秒ごとにディメンションを再評価するように思われる場合(17行目を参照)。
getViewportDimensions
getViewportWithoutScrollbarDimensions
getDocumentDimensions
measureElementBox
getViewportDimensions()
/ajax/dimension_context.php
全体として、上記のCSSメソッドを使用して、大規模な画像を正しいステージサイズに合わせるだけで、重要なこと(実際の異なる画像を見つけることを除く)を実行できると思います。