Changeset 35854 for websites/modoki

Show
Ignore:
Timestamp:
11/05/09 15:00:33 (4 years ago)
Author:
arccosine
Message:

Operaの場合、keypress。それ以外はkeydownで動くようにした。

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • websites/modoki/index.html

    r35849 r35854  
    239239        } 
    240240        this.keyHandler = { 
    241           'j'   : function(){ _self.down(); }, 
     241          'J'   : function(){ _self.down(); }, 
    242242          'DOWN'   : function(){ _self.down(); }, 
    243           'k'   : function(){ _self.up(); }, 
     243          'K'   : function(){ _self.up(); }, 
    244244          'UP'   : function(){ _self.up(); }, 
    245           's'   : function(){ _self.fav(); }, 
    246           'e'   : function(){ _self.open_url(); }, 
    247           'r'   : function(){ _self.reply(); }, 
    248           'n'   : function(){ _self.nextTab(); }, 
     245          'S'   : function(){ _self.fav(); }, 
     246          'E'   : function(){ _self.open_url(); }, 
     247          'R'   : function(){ _self.reply(); }, 
     248          'N'   : function(){ _self.nextTab(); }, 
    249249          'RIGHT'   : function(){ _self.nextTab(); }, 
    250           'p'   : function(){ _self.prevTab(); }, 
     250          'P'   : function(){ _self.prevTab(); }, 
    251251          'LEFT'   : function(){ _self.prevTab(); }, 
    252252          'ENT' : function(){ _self.reply(); }, 
    253253          'R'   : function(){ _self.retween(); }, 
    254254          ' '   : function(){ _self.searchLastUnread(); }, 
    255           'gg'  : function(){ _self.searchTop(); }, 
    256           'G'  : function(){ _self.searchLast(); }, 
    257           'a'   : function(){ _self.clearUnread(); }, 
     255          'GG'  : function(){ _self.searchTop(); }, 
     256          'S-G' : function(){ _self.searchLast(); }, 
     257          'A'   : function(){ _self.clearUnread(); }, 
    258258          'C-H' : function(){ _self.openHome(); }, 
    259259          'C-E' : function(){ _self.openTwid(); } 
     
    261261        this._altanative = (new Date).getTime(); 
    262262        this._crosspost = 0; 
    263         this._version = '0.53'; 
     263        this._version = '0.55'; 
    264264        this._max_id = 0; 
    265265        this.p_name = ''; 
     
    268268        this._outputz_secret = this.readCookie('outputz_secret'); 
    269269        this._footer_message = this.readCookie('footer_message'); 
    270         this._user_name = this.readCookie('user_name'); 
    271         this._user_pass = this.readCookie('user_pass'); 
    272270        this.nt; 
    273271        this.keyChoice = []; 
     
    278276          'Option': { 'selected' : false, 'func' : function(){ _self.showOptionArea(); } } 
    279277        }; 
    280  
    281  
    282278      }, 
    283279 
     
    287283        this.firstStroke = {}; 
    288284        for( var key in this.keyHandler ){ 
    289           if( key.length > 1 ){ 
     285          if( key.length > 1 && !(/DOWN|LEFT|RIGHT|UP|ENT|TAB|BS|ESC|S-|A-|C-/.test(key))){ 
    290286            this.firstStroke[key[0]] = 'sw'; 
    291287          } 
    292288        } 
    293289        var keybind = function(e){ 
    294           if( e.target.tagName == 'INPUT' || e.target.tagName == 'TEXTAREA' ) return; 
     290          if( /INPUT|TEXTAREA/.test(e.target.tagName) ) return; 
    295291          var keyCode = (e.which || e.keyCode); 
    296           var pressKey= (e.ctrlKey?'C-':'') + (e.altKey?'A-':'') + ((typeof _self.specialkey[keyCode] == 'undefined' )?String.fromCharCode(keyCode) : _self.specialkey[keyCode]); 
    297           _self.keyChoice.push(pressKey); 
     292          var pressKey = (e.ctrlKey?'C-':'') + (e.altKey?'A-':'') + (e.shiftKey?'S-':'') + ((typeof _self.specialkey[keyCode] == 'undefined' )?String.fromCharCode(keyCode) : _self.specialkey[keyCode]); 
     293          if( window.opera ){ pressKey = pressKey.toUpperCase(); } 
    298294          if( _self.firstStroke[pressKey] == 'sw' ){  //w stroke bind 
     295            _self.keyChoice.push(pressKey); 
    299296            if( typeof _self.keyHandler[_self.keyChoice.join('')] != 'function' ){ 
    300               _self.keyChoice.length = 0; 
    301               _self.keyChoice.push(pressKey); 
    302297              e.preventDefault(); 
    303298              return; 
     
    308303          if( typeof _self.keyHandler[pressKey] != 'function' ) return;  
    309304          try{ 
    310               _self.keyChoice.length = 0; 
    311               e.preventDefault();    //Stop Default Event 
    312               _self.keyHandler[pressKey].apply(); 
     305            _self.keyChoice.length = 0; //clear keychoice 
     306            e.preventDefault();    //Stop Default Event 
     307            _self.keyHandler[pressKey].apply(); 
    313308          }catch(d){} 
    314309        }; 
    315         window.addEventListener('keypress', keybind, false); 
     310        //opera can't stop default event in keydown events. 
     311        window.addEventListener((window.opera) ? 'keypress' : 'keydown', function(e){ keybind(e); }, false ); 
    316312      }, 
    317313 
     
    357353          footer_message.value = this._footer_message; 
    358354        } 
    359  
    360         //user name 
    361         _option_area.appendChild(d.createElement('br')); 
    362         _option_area.appendChild(d.createTextNode('user name ')); 
    363         var user_name = _option_area.appendChild(d.createElement('input')); 
    364         user_name.id = 'user_name'; 
    365         user_name.type = 'text'; 
    366         if( this._user_name != '' ){ 
    367           user_name.value = this._user_name; 
    368         } 
    369  
    370         //user pass  
    371         _option_area.appendChild(d.createElement('br')); 
    372         _option_area.appendChild(d.createTextNode('user pass ')); 
    373         var user_pass = _option_area.appendChild(d.createElement('input')); 
    374         user_pass.id = 'user_pass'; 
    375         user_pass.type = 'password'; 
    376         if( this._user_pass != '' ){ 
    377           user_pass.value = this._user_pass; 
    378         } 
    379  
    380355 
    381356        _option_area.appendChild(d.createElement('br')); 
     
    473448        } 
    474449 
    475         var saveDatas = ['outputz_secret', 'footer_message', 'user_name', 'user_pass' ]; 
     450        var saveDatas = ['outputz_secret', 'footer_message' ]; 
    476451        for( var i=0, l=saveDatas.length; i<l; i++ ){ 
    477452          write_datas(saveDatas[i]); 
    478453        } 
     454 
     455        var fl_str = ''; 
     456        for( var i=0, l=this.followers.length; i<l; i++ ){ 
     457          fl_str += this.followers[i] + ','; 
     458        } 
     459        fl_str = fl_str.substring(0, fl_str.length-1); 
     460 
    479461      }, 
    480462      readCookie : function(key){ 
     
    780762      twAuth : function(){ 
    781763       var url = 'https://twitter.com/account/verify_credentials.json?callback=ta'; 
    782        if( this._user_name.length !=0 && this._user_pass.length != 0 ){ 
    783          var str = 'https://' + this._user_name + ':' + this._user_pass + '@'; 
    784          url = url.replace('https://',str); 
    785        } 
    786764       this.getJSON(url); 
    787765      }, 
     
    806784        modoki.p_name = data.screen_name; 
    807785        modoki.p_id = data.id; 
    808         modoki.twFollower(data.id); 
     786        if( modoki.followers.length == 0 ){ 
     787          modoki.twFollower(data.id); 
     788        }else{ 
     789          stLoad(); 
     790        } 
    809791    }; 
    810792 
     
    812794      modoki.followers=data.sort(); 
    813795      modoki.followers.push(modoki.p_id); 
     796      stLoad(); 
     797    }; 
     798 
     799    var stLoad = function(){ 
    814800      document.getElementById('time_line').innerHTML = ''; 
    815801      modoki.loadTimeLine(); 
     
    824810      firstTime(); 
    825811      modoki.loop = setInterval( function(){ modoki.loadTimeLine(); }, 45000 ); 
    826  
    827812    }; 
    828813