【改めて記述】
動かす事ができたので改めて書きます。
http://jsbin.com/aheped/1
とにらめっこしてわかった事。
- $(function(){})内でpageinit等のイベントを定義する必要は無い。
- pageinitがセットされるタイミングで既にDOM構築が終わっていなければいけない。
恐らく1の動作で$(function(){})で定義すると環境によって動作が違うように感じる。というわけで、レガシーな書き方に近い方法を踏襲すれば良い様子。
- pageinitは$(function(){})の外で定義する。
- 上記は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でも