@@ -36,22 +36,26 @@ var messager = vAPI.messaging.channel('stats.js');
3636
3737var renderPageSelector = function ( targetTabId ) {
3838 var selectedTabId = targetTabId || uDom ( '#pageSelector' ) . val ( ) ;
39- var onTabReceived = function ( tabId , tabTitle ) {
40- uDom ( '#pageSelector' ) . append ( '<option value="' + tabId + '">' + tabTitle ) ;
41- if ( tabId . toString ( ) === selectedTabId ) {
42- uDom ( '#pageSelector' ) . val ( tabId ) ;
39+ var onDataReceived = function ( pageTitles ) {
40+ if ( pageTitles . hasOwnProperty ( selectedTabId ) === false ) {
41+ selectedTabId = pageTitles [ 0 ] ;
4342 }
44- } ;
45- var onDataReceived = function ( pageDetails ) {
46- uDom ( '#pageSelector option' ) . remove ( ) ;
47- if ( pageDetails . hasOwnProperty ( selectedTabId ) === false ) {
48- selectedTabId = pageDetails [ 0 ] ;
49- }
50- for ( var tabId in pageDetails ) {
51- if ( pageDetails . hasOwnProperty ( tabId ) ) {
52- onTabReceived ( tabId , pageDetails [ tabId ] ) ;
43+ var select = uDom ( '#pageSelector' ) . empty ( ) ;
44+ var option ;
45+ for ( var tabId in pageTitles ) {
46+ if ( pageTitles . hasOwnProperty ( tabId ) === false ) {
47+ continue ;
48+ }
49+ option = uDom ( '<option>' ) . text ( pageTitles [ tabId ] )
50+ . prop ( 'value' , tabId ) ;
51+ if ( tabId === selectedTabId ) {
52+ option . prop ( 'selected' , true ) ;
5353 }
54+ select . append ( option ) ;
5455 }
56+ // This must be done after inserting all option tags, or else Firefox
57+ // will refuse values which do not exist yet.
58+ select . prop ( 'value' , selectedTabId ) ;
5559 selectPage ( ) ;
5660 } ;
5761 messager . send ( { what : 'getPageDetails' } , onDataReceived ) ;
0 commit comments