jQuery Mobileのバージョンアップではまった – pushStateの存在 –
公開日: :
最終更新日:2014/04/20 IT, jQueryMobile
前提
jQuery Mobileのcss、javaScriptは以下のように利用
- cssはダウンロードし自分のサーバにアップ
- javaScriptはCDNを利用
また、自前としては
- 一部、自前のcssを用意
- 設定用の自前のjavaScriptを用意
上記から以下のような感じになってます。
<link href="/jquery/jquery.mobile.min.css" rel="stylesheet" type="text/css" /> <link href="/css/jquery-custom.css" rel="stylesheet" type="text/css" /> <script src="http://code.jquery.com/jquery-1.6.2.min.js"></script> <script src="/js/jquery-setting.js"></script> <script src="http://ajax.aspnetcdn.com/ajax/jquery.mobile/1.0b3/jquery.mobile-1.0b3.min.js"></script>
※jsのCDN先を変更しました(update 2011/09/21)
※1.0でも同様の現象が起きます。
初期設定
Ajaxは使用しないでjquery-setting.jsで以下のように初期設定
$(document).bind("mobileinit", function(){ $.mobile.ajaxEnabled = false; })
現象
上記の前提、初期設定により起きた現象は以下のとおり。
- あるページAからリンクされている違うページBへのリンクをクリック
- Bが表示されたらブラウザのバックでAに戻る
- 再度、Bへのリンクをクリック
- loadingと表示されBのURLでありながらAの内容が表示される
※ちなみにPCでやった場合は上記の現象は発生せず、スマートフォン(iPod、MEDIAS、Xperia)で発生しました。
Ajaxは使用しないようにしているのに、なぜ上記現象が発生するのか謎でした。
解決方法
jQuery Mobile Beta3からpushStateに対応したようです。
どうもそれが原因じゃないのかなと予想。
pushStateって?
[Ajaxを使うようにしていた場合]
example.com/からexample.com/sampleに遷移すると、URLはexample.com/#/sampleになってました。
それが、pushState対応になるとexample.com/sampleのままになります。
デフォルトでpushStateは有効になっています。
なので以下のように無効に変更。
$(document).bind("mobileinit", function(){ $.mobile.ajaxEnabled = false; $.mobile.pushStateEnabled = false; })
上記の初期設定をした結果、現象で書いた内容は起きなくなりました。
どうも、Ajaxを使わないようにしつつpushStateを有効にすると発生する現象に思えます。
[追記]
ajaxとpushStateをtrueにした場合で、ブラウザバックを利用すると上記現象が発生するケースがあります。
ブラウザバックをユーザーが使わないというのであれば良いんだと思いますが、それは厳しいですよね。
広告
関連記事
-
iPhoneアプリ開発 芳名帳アプリ作成(2) -記帳画面作成-
* 今までの流れ - * 画面構成 今回の芳名帳アプリは以下の画面で構成しています。 -
-
FacebookページをFacebookアプリで表示 -iPhoneアプリ編-
* やりたいこと Facebookアプリを入れている人には、アプリでFacebookページで表示。
-
CakePHP1.3でテストコード(3) -ENUM型が使えない-
cakePHP1.3でのSimpleTestを使ったテストケースの第3回目。 今回は、テーブル構成で
-
WordPressプラグイン「SyntaxHighlighter Evolved」が動かない!?
* 起きたこと ある時から、本ブログのコードの部分が「SyntaxHighlighter」で表示され
-
Objective-cで悩んでいたこと −アクセサのことについて−
* 疑問 以前書いたiPhoneアプリを開発していて(Objective-Cを触っていて)疑問に思
-
iPhoneアプリ開発 −タッチで線を描く(1)−
* やりたいこと 今回やりたいことは以下の2点。 -(1) 画面をタッチして、指を動かして線を描きた
-
CakePHP1.3にSmartyを導入
いい加減、CakePHP(1.3)にもSmartyを導入することにしました。 * ダウンロード
-
TestLink1.91のバグの修正方法
どうやらTestLink1.91にはバグがあるようなので、修正方法を以下に記述。 Test
-
Capistranoで簡単デプロイ -開発用サーバー編-
cakePHPを使って開発しているサービス()で、リリース周りを楽にしたいなと思いCapistran
-
iPhoneアプリ開発 −2本指で画像を移動させる−
* やりたいこと 表示させている画像(UIImageView)を2本指で移動させたい。 ※1本指は別
Comment
どうもありがとう!
私も同じところでハマッテいましたが
この記事で解決できました。
同様の現象が発生し
ググってググって、やっとココに辿り着くことができました
おかげ様で解決しました
感激です
同じ現象で苦しんでいました!
ありがとうございます!
ありがとうございました。
まったく同じ現象で悩んでいたところ救われました。
同じく。
ありがとうございます。
同じ現象で苦しんでました。
本当に助かりました!
ありがとうございました。