2008/3/31 月曜日 by kouichi
GWTで右クリックのイベントを受け付けるには、MouseListenerを持っているオブジェクトで
element.addMouseListener(new MouseListenerAdapter(){
public void onMouseDown(Widget sender, int x, int y) {
if(DOM.eventGetButton(DOM.eventGetCurrentEvent())==Event.BUTTON_RIGHT){
Window.alert("右クリック");
}
}
});
のようにすればイベントを受けることができます。
でも、どうもOperaではだめみたいですね。
IE、FireFoxでは通知がくるのですが、Operaは左クリックしかonMouseDownのイベントが発生しないようです。
クロスブラウザの道長しです。
Posted in GWT | No Comments
2008/3/28 金曜日 by kouichi
こちらのようにmod_rewriteを使って動的URLを静的に見せる方法がありますが、mod_proxyを使った場合は、
RewriteEngine on
RewriteRule ^/([a-z]*)/([0-9]*)/([0-9]*)/$ balancer://ajp-balancer/yyy/xxx.jsp?a=$1&b=$2&c=$3 [P,L]
のようにします。
ポイントは2つ。
ひとつはリライト先のURLがajpプロトコルになっています。
上だとbalancer://ですが、バランサーを使わない場合はajp://になると思います。
もうひとつは[P]オプションをつけること。
proxyを使うのだから言わずもがなかも知れませんが、[P]をつけないと最終的にブラウザに表示されるURLがリダイレクト先のURLになってしまいます。
Posted in Tomcat, サーバ関連 | No Comments
2008/3/27 木曜日 by kouichi
GWTでEntryPoint#onModuleLoadが呼ばれるタイミングが気になって調べてみました。
onModuleLoad内で、document.bodyの操作ができることから、HTMLが読み込まれた後だということはわかるのですが、onloadイベントが上書きされないので、どうやっているのか。。。
GWTのHTMLに読み込まれるxxx.nocache.jsというファイルを見ると(xxxは作成したEntryPointのクラス名)31行目付近に
if(k.addEventListener){k.addEventListener('DOMContentLoaded',function(){x();A();},false);}
var B=setInterval(function(){if(/loaded|complete/.test(k.readyState)){x();A();}},50);
と書かれています。
IEとFireFoxでは動きが違うようです。
前のほうがFireFox、後のほうがIEの挙動です。
FireFoxはDOMContentLoadedのイベントで処理していました。
IEのほうはkがdocumentなのでdocument.readStateのステータスで判断しています。
この違いだと、IEはHTML内のコンテンツをすべて読み込んだ後、FireFoxはHTMLのみが読み込まれたタイミングで実行されます。
ためしに、大きな画像ファイルを読み込むようにしたサンプルを作ったところ、
IEでは画像を読み込んだ後
FireFoxでは画像を読み込む前
にonModuleLoadが呼ばれました。
ちなみにOperaもFireFoxと同じ挙動です。
Posted in GWT | No Comments