元派遣プログラマの自称技術系ブログです。雑記とか自作のオープンソースプロジェクトの話とか。
Javaとか組込とかできます。お仕事ください。

不具合解消かな。

昨日見つけたバグを直した。

過去のNavigationRingを見てみると、どうももともとIEやOperaで背景イベントキャンセルがまともに動いていなかったらしい。

あちゃー・・・

で、対策をメモ

IEでは、transparent色のDIVタグはイベントをキャプチャしない事があるらしい。具体的には、transparent色のDIVタグの背景にイベントをキャプチャ可能な要素があるばあいのみ、イベントがDIVタグを貫通してしまう。

有色DIVの場合イベント貫通は発生しないので、CSSで透明度を設定した有色DIVを使う事にした。
具体的にはelement.style.filter="Alpha(opacity=0)";みたいな感じで。
これはIEだけに必要なので、element.style.filterがundefinedじゃないかチェックして、ある場合はこっち。無い場合は従来のtransparent色を使うことにした。


もひとつ。背景を選択できちゃう件。
OnMouseMoveとOnMouseDownのイベント伝播を止めないとだめ。
 if(document.all && !this._IS_OPERA){//IE
  e.returnValue = false;
  e.cancelBubble = true;
 }else{//not IE
  e.preventDefault();
  e.stopPropagation();
 }

これをイベントハンドラの中で実行すれば、ブラウザのデフォルト処理までイベントが回らなくなって、選択が出来なくなる(というか、なった)