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 | 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