風柳メモ

ソフトウェア・プログラミング関連の覚書が中心

Twitter の外部サイト画像/映像に関する謎

SAMEORIGIN なのに…

Twitterのツイートに Tumbler や TwitPic、YouTube 等の外部サイトへのリンクがある場合、当該サイト上の画像や映像もサムネイル表示してくれて、これをクリックすると画面中央にギャラリーがポップアップして画像や映像が表示される。


このサムネイルを含む部分は、ツイートのURL

https://twitter.com/ユーザ名/status/ステータスID

に対して、

https://twitter.com/i/cards/tfw/v1/ステータスID

というURLのドキュメントを読み込むIFRAMEになっている。


と、ここまではいいんだけれど…。


このIFRAMEのdocumentには、なぜかユーザスクリプトやブックマークレット等からはアクセスできない。
アクセスしようとすると、

Uncaught SecurityError: Blocked a frame with origin "https://twitter.com" from accessing a frame with origin "https://twitter.com". The frame requesting access set "document.domain" to "twitter.com", but the frame being accessed did not. Both must set "document.domain" to the same value to allow access. init.b772b2062cc7553417950a666adbc2e085190ada.js:266

のようなエラーが発生してしまう(Google Chromeの場合)。
エラー内容からして、同じドメインからのアクセスなのに拒否されている感じ…。


IFRAME 内でイベント(マウスのクリック)が発生すると、親フレーム側でギャラリーがポップアップするのだから、フレーム間通信を行っていることは確実だと思うのだけれど…。
上記エラーのために、ユーザスクリプトで IFRAME 内のイベントを発生させる方法が現状わからないため、Twitterタイムラインの画像をキー操作で開くユーザースクリプトも外部サイトの画像には対応できていない。
とてもじゃないけれど、Twitter標準スクリプトを解析する気にはならないので、解決できずにそのままになりそう…だれかヒントなりとくれないかなぁ…。