Changeset 23636 for lang/javascript

Show
Ignore:
Timestamp:
11/14/08 16:26:20 (5 years ago)
Author:
fujidig
Message:

canvas にフォーカスが当たっているときはキー入力を奪うように

Location:
lang/javascript/hsp-on-js/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/hsp-on-js/trunk/gui-trial.html

    r23412 r23636  
    9292                } 
    9393                this.removeEvents(); 
     94                this.iframe = this.ctx = null; 
    9495        }; 
    9596} 
     
    121122                resetButton.style.display = 'none'; 
    122123                resetButton.appendChild(document.createTextNode('リセット')); 
    123                 var canvas = document.createElement('canvas'); 
     124                 
     125                var iframe = document.createElement('iframe'); 
     126                iframe.setAttribute('width', 640); 
     127                iframe.setAttribute('height', 480); 
     128                iframe.style.border = 'none'; 
     129                iframe.style.display = 'none'; 
     130                 
     131                $(textarea) 
     132                        .after(iframe) 
     133                        .after(resetButton) 
     134                        .after(messageSpan) 
     135                        .after(runButton) 
     136                        .keyup(function(){resizeTextarea(this);}); 
     137                 
     138                var win = iframe.contentWindow; 
     139                var doc = win.document; 
     140                doc.write("<body></body>"); 
     141                doc.close(); 
     142                doc.body.style.margin = '0'; 
     143                doc.documentElement.style.overflow = 'hidden'; // for Safari and Google Chrome 
     144 
     145                var canvas = doc.createElement('canvas'); 
    124146                canvas.width = 640; 
    125147                canvas.height = 480; 
    126                 canvas.style.display = 'none'; 
     148                doc.body.appendChild(canvas); 
     149 
    127150                var compileCount = 0; 
    128151                $(runButton).click(function() { 
     
    149172                                var evaluator = new HSPonJS.Evaluator(axdata, sequence); 
    150173                                evaluator.ctx = canvas.getContext('2d'); 
     174                                evaluator.iframe = iframe; 
    151175                                quitEvaluator(i); 
    152176                                evaluators[i] = evaluator; 
    153177                                evaluator.guiInitialize(); 
    154                                 canvas.style.display = 'block'; 
     178                                iframe.style.display = 'block'; 
    155179                                resetButton.style.display = ''; 
     180                                setTimeout(function(){ win.focus(); }, 0); 
    156181                                evaluator.evaluate(); 
    157182                        }); 
     
    159184                $(resetButton).click(function() { 
    160185                        quitEvaluator(i); 
    161                         canvas.style.display = 'none'; 
     186                        iframe.style.display = 'none'; 
    162187                        resetButton.style.display = 'none'; 
    163188                }); 
    164                 $(textarea) 
    165                         .after(canvas) 
    166                         .after(resetButton) 
    167                         .after(messageSpan) 
    168                         .after(runButton) 
    169                         .keyup(function(){resizeTextarea(this);}); 
    170189        }); 
    171190}); 
  • lang/javascript/hsp-on-js/trunk/gui-trial.js

    r23540 r23636  
    8585        function onkeydown(e) { 
    8686                self.keyPressed[e.keyCode] = true; 
     87                e.preventDefault(); 
     88        } 
     89        function onkeypress(e) { 
     90                // for Opera 
     91                e.preventDefault(); 
    8792        } 
    8893        function onkeyup(e) { 
     
    103108                } 
    104109        } 
     110         
     111        var doc = this.iframe.contentWindow.document; 
    105112        addEvent(ctx.canvas, 'mousemove', onmousemove); 
    106         addEvent(document, 'keydown', onkeydown); 
    107         addEvent(document, 'keyup', onkeyup); 
     113        addEvent(doc, 'keydown', onkeydown); 
     114        addEvent(doc, 'keypress', onkeypress); 
     115        addEvent(doc, 'keyup', onkeyup); 
    108116        addEvent(ctx.canvas, 'mousedown', onmousedown); 
    109117        addEvent(ctx.canvas, 'mouseup', onmouseup); 
     
    111119        this.removeEvents = function() { 
    112120                removeEvent(ctx.canvas, 'mousemove', onmousemove); 
    113                 removeEvent(ctx.canvas, 'keydown', onkeydown); 
    114                 removeEvent(ctx.canvas, 'keyup', onkeyup); 
     121                removeEvent(doc, 'keypress', onkeypress); 
     122                removeEvent(doc, 'keydown', onkeydown); 
     123                removeEvent(doc, 'keyup', onkeyup); 
    115124                removeEvent(ctx.canvas, 'mousedown', onmousedown); 
    116125                removeEvent(ctx.canvas, 'mouseup', onmouseup);