QA@IT

iPhone(iOS,MobileSafari)でpjaxは動かない?

2807 PV

iPhone上ではpjaxは動かないのでしょうか?

jquery-pjaxで実装していて、ChromeのユーザエージェントをiOS5に変更して動かした時だけはrequest.xhr? request.headers['X-PJAX']共にちゃんと値が入り、pjaxとして認識されるようなのですが、その他、ユーザエージェントをiOS4にした時や実機のiOS6などでは共にnilになってしまい、pjaxのリクエストとして認識してくれないようです。

pjax用のjsは下記のような感じで実装しています。
何か足りない処理などがあるのでしょうか?

//= require jquery
//= require jquery.pjax

// pjax
$(function() {
  $('#pjax_target').pjax('a.pjax', { timeout: 20000 })
});

回答

jquery.pjax はユーザーエージェントが iOS4 の場合は動作しないようになっているようです
(https://github.com/defunkt/jquery-pjax/blob/3d34af6a842c2c70d1a2fce5eccb1c61d062c0da/jquery.pjax.js の 740 行)。

いっぽう、iOS6 (実機) で試してみたところ、期待通りに動作しました。

イベントハンドラの設定がうまくいっていない、ハンドラ実行中にエラーが起こっている、などのある可能性があります。

Mac をお持ちなら、下記の方法で Mac の Safari から挙動をチェックしてみるといいかもしれません。

参考: http://www.yoheim.net/blog.php?q=20120913

編集 履歴 (0)
  • ありがとうございます。iOS6では動くんですね。pjaxのerrorコールバックなど、確認してみます。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。