IE 7でconfirmとdisabledの問題と解決(asp.net)を行い、標準ブラウザと互換性がある
2873 ワード
この2,3日この上の工夫が多すぎて、実験しないのはaspです.Netの原因はやはりie 7自身の原因で、問題はこうです.
理由は、提出ボタン/リンクをクリックすると、大量のデータ処理があり、時間がかかります.お客様はクリックした後、このボタンを灰にすると同時に、半透明のポップアップ層を使ってアニメーションをロードする案を表示しないように要求しています.それはあまりにも"web 2.0"だったので、ははは、企业の内部アプリケーションに対して、时には原始的な手法がもっと受け入れられることがあります.
ボタン自体にclickイベントがあり、onClientClickイベントを登録し、その戻り値に基づいてデータをコミットするかどうかを判断します.
テストは顺调に合格して、しかし私がIE 7の下でテストする时、点の确认に関わらずやはり拒否することを発见して、すべて提出して、仕方がなくて、googleだけあって、めちゃくちゃな原因は私は知りたくなくて、解决は以下の通りです:
この例は私がついでに2つの問題を解決しました.returnValue=false;IE 7の提出を阻止することができて、しかしFFは提出を阻止することができません;2それにreturn falseを加える.解決できます.
はい、これはconfirmの解決です.
次の例の簡単さのためにconfirmがないと仮定し,disabledの問題を直接解決した.
ボタンがクリックされると、そのボタンが無効になるイベントがトリガーされることを想定し、ボタンが再びクリックされず、データも正常にコミットされる.
私たちはすべてこのボタンでトリガーします.
もちろん、より包括的にするために、私たちは時々Aラベルでボタンスタイルをシミュレートして提出します.私は以前はそうしていましたので、この2つの効果を同時にテストします.
jsは独立しており、jQueryを使用しています.
結果:
ボタン:IE 7でもFFでも、データをコミットすることはできません.無効にすると無効になります.submitクラスのフォームコントロールでは、コミット前に自分のdisabled属性をチェックします.チェック時に属性が本当であれば、データはコミットされません.
ハイパーリンク:IE 7の下できれいに灰になって、それから発見して、意外にもやはり提出することができません!フォームコントロールのような論理が表示されます.火狐の下ではもちろん灰になる効果はありませんが、一度に提出できる、つまり、この属性には何の意味もありません.
その上で、JSを改造します.
余談ですが、私は伝達対象をパラメータとして便利にするために、グローバル変数を設定しました.settimeout/setInterval伝達対象パラメータをどのように与えるかについては、自分でgoogleしてください.
結果:
ボタン:私たちが望んでいる効果です.
ハイパーリンク:IE 7は順調に通過し、火狐は無理に通過したが、もしあなたがこのリンクにconfirm文の確認があれば、クリックするたびに弾き出すことができ、検証されたが、データは一度しか提出されていないので、もしあなたのシステムの大部分がリンクで提出されているのに、このような効果を実現するには、confirmの前にこの要素のdisabled属性が文字列'true'であるかどうかを確定するしかないので、注意してください.ブール値ではありません.もちろん、jsで「disabled」と定義すればいいです.本質的には、disabledはフォーム要素の属性であり、非フォーム要素は標準ブラウザの下で現在の問題が発生します.
これは完成してからまとめたもので、サンプルコードは純粋に手書きで、検証されていません.もしコピーが無効になったら、主に考えを見てみましょう.ほほほ.
理由は、提出ボタン/リンクをクリックすると、大量のデータ処理があり、時間がかかります.お客様はクリックした後、このボタンを灰にすると同時に、半透明のポップアップ層を使ってアニメーションをロードする案を表示しないように要求しています.それはあまりにも"web 2.0"だったので、ははは、企业の内部アプリケーションに対して、时には原始的な手法がもっと受け入れられることがあります.
ボタン自体にclickイベントがあり、onClientClickイベントを登録し、その戻り値に基づいてデータをコミットするかどうかを判断します.
<asp:Button ID="Button1" runat=server Text="testbtn" CssClass="test" OnClick="testclick" OnClientClick="return confirm('sure?');" />
テストは顺调に合格して、しかし私がIE 7の下でテストする时、点の确认に関わらずやはり拒否することを発见して、すべて提出して、仕方がなくて、googleだけあって、めちゃくちゃな原因は私は知りたくなくて、解决は以下の通りです:
<asp:Button ID="Button1" runat=server Text="testbtn" CssClass="test" OnClick="testclick"
OnClientClick="var r=false; if(confirm('sure?')) r=true; event.returnValue=r; return r;" />
この例は私がついでに2つの問題を解決しました.returnValue=false;IE 7の提出を阻止することができて、しかしFFは提出を阻止することができません;2それにreturn falseを加える.解決できます.
はい、これはconfirmの解決です.
次の例の簡単さのためにconfirmがないと仮定し,disabledの問題を直接解決した.
ボタンがクリックされると、そのボタンが無効になるイベントがトリガーされることを想定し、ボタンが再びクリックされず、データも正常にコミットされる.
私たちはすべてこのボタンでトリガーします.
<asp:Button ID="Button1" runat=server Text="testbtn" CssClass="test" OnClick="testclick" OnClientClick="dis(this);" />
もちろん、より包括的にするために、私たちは時々Aラベルでボタンスタイルをシミュレートして提出します.私は以前はそうしていましたので、この2つの効果を同時にテストします.
asp:LinkButton ID="LinkButton1" runat="server" Text="test" CssClass="stepbtn" OnClick="btnNext_click" OnClientClick="dis(this);"></asp:LinkButton>
jsは独立しており、jQueryを使用しています.
function dis(o){
$(o).attr("disabled",true);
}
結果:
ボタン:IE 7でもFFでも、データをコミットすることはできません.無効にすると無効になります.submitクラスのフォームコントロールでは、コミット前に自分のdisabled属性をチェックします.チェック時に属性が本当であれば、データはコミットされません.
ハイパーリンク:IE 7の下できれいに灰になって、それから発見して、意外にもやはり提出することができません!フォームコントロールのような論理が表示されます.火狐の下ではもちろん灰になる効果はありませんが、一度に提出できる、つまり、この属性には何の意味もありません.
その上で、JSを改造します.
余談ですが、私は伝達対象をパラメータとして便利にするために、グローバル変数を設定しました.settimeout/setInterval伝達対象パラメータをどのように与えるかについては、自分でgoogleしてください.
var thisobj;
function dis(o){
thisobj=0;
setTimeout(function(){$(thisobj).attr("disabled",true);},300);// , ,
}
結果:
ボタン:私たちが望んでいる効果です.
ハイパーリンク:IE 7は順調に通過し、火狐は無理に通過したが、もしあなたがこのリンクにconfirm文の確認があれば、クリックするたびに弾き出すことができ、検証されたが、データは一度しか提出されていないので、もしあなたのシステムの大部分がリンクで提出されているのに、このような効果を実現するには、confirmの前にこの要素のdisabled属性が文字列'true'であるかどうかを確定するしかないので、注意してください.ブール値ではありません.もちろん、jsで「disabled」と定義すればいいです.本質的には、disabledはフォーム要素の属性であり、非フォーム要素は標準ブラウザの下で現在の問題が発生します.
これは完成してからまとめたもので、サンプルコードは純粋に手書きで、検証されていません.もしコピーが無効になったら、主に考えを見てみましょう.ほほほ.