LoginSignup
3
3

More than 5 years have passed since last update.

pageinit、pagecreate等が呼ばれない場合。

Last updated at Posted at 2013-07-03

【改めて記述】
動かす事ができたので改めて書きます。
http://jsbin.com/aheped/1
とにらめっこしてわかった事。

  1. $(function(){})内でpageinit等のイベントを定義する必要は無い。
  2. pageinitがセットされるタイミングで既にDOM構築が終わっていなければいけない。

恐らく1の動作で$(function(){})で定義すると環境によって動作が違うように感じる。というわけで、レガシーな書き方に近い方法を踏襲すれば良い様子。

  1. pageinitは$(function(){})の外で定義する。
  2. 上記はDOM構築が終わってから呼べば良いので、bodyの一番下でjsを定義したりすると良い。

自分の所ではこれで無事に動作しました。以下は過去に書いた駄文。


【追記】なんだかイロイロ調査不足で上げてしまった様子なので、また改めて調査してから書き直します。ごめんなさい。

どうもイベントが呼ばれない様子で調べてみると、下記が引っかかった。
http://forum.jquery.com/topic/pageinit-event-not-fired-with-1-3-1
導入しているバージョンが同一で似たような相談をしている。

※下嘘。
途中で提示されている下記は、ChromeやMac上のSafariではポップアップが2回呼ばれて正しい動作をしたが、iPhoneでは何も呼ばれなかった。
http://jsbin.com/aheped/1/edit
※すんまそん。上嘘でした。動作してた。

現在継続調査中(誰か知ってる人おせ〜て)。
この辺りに不安があるなら古いバージョンを使う等工夫をした方が良いかも知れない。

とりあえずソース。

    $(document).on('pagecreate', '#main-page', function(event){
        console.log('#main-page pagecreate');
    });

    $(document).on('pageinit', '#main-page', function(event){
        console.log('#main-page pageinit');
    });

$(function () {})の外で書いても中で書いてもiPhoneでは呼ばれてくれない。むむー。

【追記】
Chromeでも、URLを綺麗な状態にしたらイベントが起こらなくなった。
iPhoneでも

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3