スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ドロップダウンリストが固定したヘッダより上に表示されてしまうIEのバグを回避する方法


あるシステム屋による開発の記録  ASP.NETのGridViewコントロールのヘッダを固定してスクロールする
でGridViewのヘッダを固定してスクロールする方法を紹介したが、
このGridViewの中にドロップダウンリストが含まれると、
固定したヘッダよりもドロップダウンリストの方が上に表示されてしまう。

どうやらこれはIE6のバグであるらしく、
IE7以降とか他のブラウザでは発生しない現象のようだ。

とはいえ会社内でIE6を使用しているところはまだまだ多いはずで、
WEBアプリケーションを作るうえでは無視できない。

対応するのに参考にしたサイトは以下のもの:
・縦スクロールに対応:主にこちらを参考にした
GridViewで固定したヘッダーの表示位置 - Insider.NET - @IT
・縦横スクロールに対応???:さらにいろいろとやっているのがこちら
# ちゃんと読めてない…
Re[29]: 【GridView(ヘッダ固定)】DropDownList

続きを読む

スポンサーサイト

ASP.NETでの二重送信をjavascriptで防止する(2)


あるシステム屋による開発の記録  ASP.NETでの二重送信をjavascriptで防止する(1)
の続き。
ASP.NETでの二重送信を防止する方法について。

(2) 画面が処理中の状態の場合にボタン押下後のイベントを発生しないようにする


(1) の対応を行っておけばそれだけでも(このレベルの対応としては)問題ないと言えるが、
さらにjavascriptでdocument.readyStateがnullでも'complete'でもない場合
(すなわち、フォームの状態が読み込み中の場合)に
処理を行わないようにしておく。

具体的な実装方法は以下のサイト参照:
ASP.NET & JavaScriptでコード汚染をしないで2度押し防止 - 手抜きぷろぐらまのメモ帳

基本的には、これを参考にしてjsファイルを作成し、
それにリンクを張っておくだけで二重送信の防止を実装したことになる。

注意が必要なのは、上記の例ではbodyのonloadイベントと
buttonのonclickのjavascriptを書き換えてしまうこと。
別の処理をonloadやonclickで行っている画面の場合は、
個別に実装する必要があるかもしれない。

また、モーダルウィンドウからのファイルダウンロード のように、
その画面自体は遷移しないが別のフレーム等に対してjavascriptで動作させるような場合は、
上記のdocument.readyStateがinteractive(操作可能)になったままになることがある。
(readyStateについてはこちら:readyState参照)

interactiveになるのはその画面事態の処理としては行われていない状態であるため、
この場合もsubmit可能であるとしても問題ないかもしれない。

その他の方法


画面を"フリーズ"させて、処理中に操作不能にする:
JavaScriptを利用してフォームの二重送信を防止する / 4 Guys From Rolla - japan.internet.com コラム

div要素を全画面にかぶせて実現するらしい。

あとは、フォームそのものを無効化する方法:
フォームを無効化する

この方法だとボタンどころかフォームに含まれるすべてのコントロールが非活性となるが、
おそらくそれだけではその後の処理が行われないというのは、
(1)の方法と同じだろう。


ASP.NETでの二重送信をjavascriptで防止する(1)


WEBアプリで対応すべき問題のひとつに、
submitの二重送信の問題がある。
これを防いでおかないと、
データの二重登録や、不正な画面遷移を発生させたり、
場合によってはアプリケーションが停止してしまうこともある。

二重送信は、悪意のあるやり方だけではなく、
処理に時間がかかっているときにボタンが押下できる状態(Enable = true の状態)になっていて、
なかなか処理が進まないから再度ボタンを押下してしまったり、
事故でボタンをダブルクリックしてしまったりということも考えられるため、
必ず対応すべき問題のひとつだといえる。

二重送信を防ぐには、いくつかやり方があるが、
ここではjavascriptを使って
(1) ボタン押下後にボタンを非活性に変更することで意図的には再度押下できないようにし、さらに
(2) 画面が処理中の状態の場合にボタン押下後のイベントを発生しないようにすることで、
二重送信を防ぐ方法を紹介する。

続きを読む


Adsense
ブログ内検索
カテゴリー
最近の記事
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
月別アーカイブ
feedmeter & あわせて読みたい
フィードメーター - あるシステム屋によるJava開発の記録
あわせて読みたいブログパーツ
プロフィール

kamii

Author:kamii
ピタゴラスイッチ好きなシステム開発屋@二児の父です。

メールフォーム

名前:
メール:
件名:
本文:

カウンター
checker
ページランク


ブログチャート
現在時刻
全エントリ表示

全てのエントリを表示する

RSSフィード
リンク
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。