/// <summary>
/// Adds Javascript code to safely set focus on the specified control.
/// </summary>
public static void Focus(this Web.UI.Control control, bool safe)
{
if (!safe)
{
control.Focus();
}
var script =
@"setTimeout(function() {
var fn = function() {
var control = $get('#CLIENT_ID#');
if (control && control.focus) { try { control.focus(); } catch (err) { } }
try{ Sys.Application.remove_load(fn); } catch (err) { }
};
Sys.Application.add_load(fn); fn();
}, 10);".Replace("#CLIENT_ID#", control.ClientID);
ScriptManager.RegisterStartupScript(control.Page, control.GetType(), control.ClientID + "_SetFocusOnLoad", script, addScriptTags: true);
}