Re:

感銘高き名言は「1%のひらめきがなければ99%の努力は無駄である」(トーマス・エジソン)

タグ:jQuery

けっこう深刻。

だって動かないんだからw

ホントかよーって思ったけど、確かに2回目以降はサーバサイドにリクエストは投げず、ブラウザがキャッシュしてるレスポンスデータで処理されてた。

なんてこったい!


とりあえず引用サイトでサンプルコード載せてくれてるので、ほぼそのまま実装しとけば $.ajax({type:'POST'}) や $.post() によるキャッシュ回避が可能。

タイムスタンプ付けて違うリクエストとして処理させる騙し技で十分な場合のみね。

iOS6 Mobile SafariがAjax POSTでキャッシュする問題を回避する方法 | クラスメソッド開発ブログ
http://dev.classmethod.jp/smartphone/ios6-safari-post-jquery/

ただ、jQueryMobile の section 動作においては GET, POST いずれでもなく、originalOptions に type プロパティが存在しないので、 jQueryMobile を導入したサイトでは上記サイトのサンプルコードそのままではエラーが起こってしまう。

なので、undefined チェックを追加しておく。以下。

$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
+ if(originalOptions.type == undefined) {
+   return;
+ }
  if(originalOptions.type.toLowerCase() == 'post'){
    options.data = jQuery.param($.extend(originalOptions.data||{}, {
      timeStamp: new Date().getTime()
   }));
  }
});

ondevicemotionイベントハンドラで加速度センサーを拾う。

各座標のオブジェクトプロパティは

accelerationIncludingGravity.x;
accelerationIncludingGravity.y;
accelerationIncludingGravity.z;


んで、jQueryでbindした際

$(window).bind('devicemotion', function(event){
    ax = event.accelerationIncludingGravity.x;
    ay = event.accelerationIncludingGravity.y;
    az = event.accelerationIncludingGravity.z;
});

では取れない。jQueryのドキュメント(Event Object – jQuery API)にSperial Propertiesの項目

Certain native events may have special properties that can be accessed as properties of the event.originalEvent object.

があるように、加速度センサーのイベントは特別なイベントなんだろうね。

だから、

$(window).bind('devicemotion', function(event){
    ax = event.originalEvent.accelerationIncludingGravity.x;
    ay = event.originalEvent.accelerationIncludingGravity.y;
    az = event.originalEvent.accelerationIncludingGravity.z;
});

とプロパティにアクセスする。


余談。

jQueryでcanvasとなるオブジェクトを拾う場合

e.g.
//var cv = document.getElementById('hoge');
var cv = $('#hoge').get(0); # or $('#hoge')[0];
var ctx = cv.getContext('2d');
<canvas id="hoge"></canvas>


1271169611535

CSS Dock Menu
http://www.ndesign-studio.com/blog/css-dock-menu

Dockのにゅるにゅる感がプラグインで簡単に作れるヤツ。

こんなインターフェースにしたいな〜と思って検索するとすぐに見つかる便利な世の中。

みんなに感謝!

iモードブラウザ2.0対応DOMについて

の「対応XMLHttpRequest」を読みますと、setRequestHeaderメソッドがありませんでした。

通りで、jQueryで$.ajax({type:'POST'})および$.post()が機能しないワケ。

ん〜XMLHttpRequestではPOST値を受け取れない?

とりあえずGETで対応したけれど、なんか腑に落ちない作り。


今日はiモードブラウザ2.0での非同期実装テストまで。

おやすみなさい。

↑このページのトップヘ