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標準スクリプトを解析する気にはならないので、解決できずにそのままになりそう…だれかヒントなりとくれないかなぁ…。