空白 (改行を含む) が HTML から取り除かれているため、モバイル デバイスで Web サイトを提供する際に問題が発生しています。
これはinline-block
要素の位置をずらすので問題です。(問題の詳細については、こちらを参照してください)。
最終的には回避策に頼りました (最初にインライン ブロック要素間の空白を取り除き、次に CSS の配置を調整しました) が、なぜこれが起こっているのかを理解したいと思います。
ウェブサイトの詳細:
- プラットフォーム: Ruby On Rails 3.2.11 (MRI 1.9.3)
- テンプレート エンジン: ERB
- ラック サーバー: シン (1.5.0)
- ホスト: Heroku (Cedar)
これが rails/rack/heroku に関連する問題なのかどうかもわからないので、ダミーの複製を作成しました。
- Rails で生成された HTML を静的
*.html
ファイルにコピー (および調整された CSS と JS リンク) - そのファイルを別のマシン (Apache) にアップロードして、静的 HTML ファイルとして提供する
そして、いくつかのテストを行いました。うーん...結果は(ほぼ)同じです。
curl で GET リクエストを送信すると、両方の Web サイト (動的 Rails アプリケーションと静的 HTML ファイル) について上記で説明したものが得られます。
- 固定電話接続を使用して、空白、改行、インデントを含む完全な「生の」HTML を取得します。
- キャリア 3G 接続を (テザリングで) 使用すると、縮小された CSS や JS のように、HTML コードからすべての空白が取り除かれます。(ちなみに、google.com から xkcd.com まで、他の Web サイトで再確認したときにも同じことが起こりました)
まだ、私のモバイルで閲覧すると、すべてがダミーの静的なもので正常にレンダリングされます。
正直なところ、どこに問題があるのか わかりません。curlは常に3G で縮小された HTML を取得するため、問題はネットワークにあると思います。それでも、スマートフォンはページが Rails によって提供されている場合にのみ文句を言います。
誰もこの問題に遭遇したことがありますか?