jQueryMobileはiframeと相性が悪い

@nqounetです。

jQueryMobile(バージョン1.3.2)を使っている時は、iframeは使わないほうが良いです。

余程の事情がなければ使わないと思いますけれども。

お察しください

iframeを使ってコンテンツ(記事)を読み込んでいたところ、読み込んだ時にその部分にジャンプしていきました。

15記事ほどあった時には、読み込まれるたびにスクロールが発生し、しばらく操作していられないような状況になっていました。

ページ遷移と、ページ表示後の処理をloadイベントでハンドリングしていたので、おそらくそのどれかが原因だろうと探っていたのですが、絞り込んでいった結果、なんとjQueryMobileが犯人でした。

DOMContentLoadedイベント(jQueryでいうと大体document.ready状態)が発生すると$.mobile.changePage()にあるtransitionPagesが呼び出されていました。

そのせいで、iframeがロードされると、勝手にスクロールしていくのでした。

最初から作っていたのなら…

既存のコンテンツをjQueryMobileへ移植するのは、元のコンテンツ(アプリとかですが)の状態にもよりますが、結構難しいですね。

今回のようにiframeでのハマりポイントもありますし、せっかくの利点であるAJAXやpushStateを活かすのが難しい。

誰かが言っていました。(直接聞いたわけではありません)

新しい酒は新しい革袋に盛れ、と。

今どきの新しいフロントエンド(スマートフォン向けとか)のフレームワークを使うのであれば、それに応じたバックエンドを用意したほうが良さそうですね。

実践 jQuery Mobile 実践 jQuery Mobile
Maximiliano Firtman
オライリージャパン
売り上げランキング: 568,924
Amazon.co.jpで詳細を見る

jQuery Mobile jQuery Mobile
Jon Reid
オライリージャパン
売り上げランキング: 392,875
Amazon.co.jpで詳細を見る

comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。