Firefox 4.0以上で、ajax等のコールバック関数からダイアログを表示するという動作を実行すると「このページによる追加のダイアログ表示を抑制する」確認ダイアログが表示される場合がある。
調査してみるとどうやら、
・一定間隔以内でポップアップが何度も表示されると、抑制ダイアログが出る。
・ただし、ユーザがクリックした直後の数百ミリ秒はその抑制は出ない。
という条件で表示されているようだった。
// ■抑制ダイアログ表示 function btnTest_Click() { setTimeout(function(){ showModalDialog(); }, 2000); } // ■抑制ダイアログが表示されない function btnTest_Click() { showModalDialog(); } function btnTest_Click() { setTimeout(function(){ showModalDialog(); }, 1); } function btnTest_Click() { setTimeout(function(){ showModalDialog(); }, 5000); }
これを回避するには、ユーザがクリックした直後にダイアログが出るようにするために、前回と同じURL,パラメータであればajaxを呼ぶ代わりに、同じ結果を戻されたものとして処理を進めて即座にダイアログを出すようにすればよい。
また、about:configで、dom.successive_dialog_time_limit=1(整数値)を登録(dom.successive_dialog_time_limitが存在しない場合は追加)しても抑制ダイアログは出なくなる。