Commit da584506e562951f64faae8ecafc09abbbc53f88
1 parent
c02520de
Modified JavaScript so that focus can happen even after dom is loaded.
Showing
1 changed file
with
45 additions
and
35 deletions
1 | if (!window.Richfaces) window.Richfaces = {}; | 1 | if (!window.Richfaces) window.Richfaces = {}; |
2 | 2 | ||
3 | -Richfaces.FocusManager = (function(){ | 3 | +Richfaces.FocusManager = (function() { |
4 | 4 | ||
5 | - var m_focus; | ||
6 | - var m_priority = 999999; | ||
7 | - var eventAttached = false; | 5 | + var m_focus; |
6 | + var m_priority = 999999; | ||
7 | + var m_domLoaded = false; | ||
8 | 8 | ||
9 | - var attachEvent = function() { | ||
10 | - if(!eventAttached) { | ||
11 | - document.observe('dom:loaded',function(){ | ||
12 | - var element = $(m_focus); | ||
13 | - element.focus(); | ||
14 | - element.select(element); | ||
15 | - Richfaces.FocusManager.clearFocus(); | ||
16 | - }); | ||
17 | - } | ||
18 | - eventAttached = true; | ||
19 | - }; | 9 | + var focus = function() { |
10 | + if (m_focus == null) { | ||
11 | + return; | ||
12 | + } | ||
13 | + try { | ||
14 | + var element = $(m_focus); | ||
15 | + if (element != null) { | ||
16 | + element.focus(); | ||
17 | + element.select(element); | ||
18 | + } | ||
19 | + } finally { | ||
20 | + Richfaces.FocusManager.clearFocus(); | ||
21 | + } | ||
22 | + }; | ||
20 | 23 | ||
21 | - return { | ||
22 | - getFocus : function() { | ||
23 | - return m_focus; | ||
24 | - }, | ||
25 | - setFocus : function(id,priority) { | ||
26 | - if(priority == null) { | ||
27 | - priority = 99999; | ||
28 | - } | ||
29 | - if(m_focus == null || priority < m_priority) { | ||
30 | - m_focus = id; | ||
31 | - m_priority = priority == null ? 0 : priority; | ||
32 | - attachEvent(); | ||
33 | - } | ||
34 | - }, | ||
35 | - clearFocus : function() { | ||
36 | - m_focus = null; | ||
37 | - m_priority = 999999; | ||
38 | - } | ||
39 | - }; | ||
40 | - })(); | 24 | + document.observe('dom:loaded', function() { |
25 | + focus(); | ||
26 | + m_domLoaded = true; | ||
27 | + }); | ||
28 | + | ||
29 | + return { | ||
30 | + getFocus : function() { | ||
31 | + return m_focus; | ||
32 | + }, | ||
33 | + setFocus : function(id, priority) { | ||
34 | + if (priority == null) { | ||
35 | + priority = 99999; | ||
36 | + } | ||
37 | + if (m_focus == null || priority < m_priority) { | ||
38 | + m_focus = id; | ||
39 | + m_priority = priority == null ? 0 : priority; | ||
40 | + if (m_domLoaded) { | ||
41 | + focus(); | ||
42 | + } | ||
43 | + } | ||
44 | + }, | ||
45 | + clearFocus : function() { | ||
46 | + m_focus = null; | ||
47 | + m_priority = 999999; | ||
48 | + } | ||
49 | + }; | ||
50 | +})(); |
Please
register
or
login
to post a comment