次のような jQuery ダイアログのデフォルトの動作を定義しようとしています。
(function($) {
/**
* Overriding default options
**/
$.ui.dialog.defaults.bgiframe = true;
$.ui.dialog.defaults.open = function() {
if ($('.ui-widget-overlay').length == 0) return;
if ($.browser.msie) {
// scrollbar fix for IE
$('html').css('overflow-y','hidden');
$('html').css('overflow-x','hidden');
} else {
// disable scrollbar for other browsers
$('body').css('overflow','hidden');
}
};
$.ui.dialog.defaults.beforeclose = function(event, ui) {
if ($('.ui-widget-overlay').length == 0) return;
if ($.browser.msie) {
// scrollbar fix for IE
$('html').css('overflow-y','auto');
$('html').css('overflow-x','auto');
} else {
// disable scrollbar for other browsers
$('body').css('overflow','auto');
}
};
})(jQuery);
上記は、ダイアログの作成時にカスタムの open/beforeclose 関数が指定されていない場合に機能します。そのため、open/beforeclose 関数を指定する機能を維持しながら、これらの機能をすべてのダイアログに追加するベスト プラクティスは何だろうと思っています。