に私はこの使用してjQueryのターミナルのようなコードを持っていません。私のコードは、ローカルで同じことを実行してcodepenまたはplunker
function show() {
for (var i = 0; i < 100; ++i) {
this.echo('line ' + i, {
flush: false
});
}
this.flush();
setTimeout(function() {
//this.flush();
}, 0);
}
var term = $('body').terminal({
show: show
}, {
onBlur: function() {
return false;
},
onInit: function(term) {
show.apply(term);
}
});
と私は水平に、ブラウザのサイズを変更するまでのラインが表示されていない このcodepen内部を窓。私はsetTimeoutを0にフラッシュ入れたとき これは動作:
setTimeout(function() {
term.flush();
}, 0);
私はローカルサーバに(setTimeoutをせずに)同じコードを実行したときにそれが正常に動作します。私はまた、iframeにコードを埋め込もうとしました。また、期待どおりに動作します。そして、コマンドshowを実行すると、実行されたコマンドとプロンプトは最後に追加されます(エコーで追加された行の後にあります)が、ウィンドウのサイズを変更すると、行の前に配置されます。
誰もが、なぜこれが起こっているのかを知っていますか?コードがローカルで異なるコードを実行するのはなぜですか?
私はjquery.terminal-src.jsファイルにブレークポイントを設定するのをやめましたが、なぜフラッシュで行が表示されないのか分かりませんでした。コードをステップ実行すると、flushが呼び出されたときにoutput_buffer配列が空であるように見えますが、ウィンドウのサイズを変更してメソッドのサイズを変更すると何とか行が表示されます。
'echo'呼び出しで' flush:false'を 'flush:true'に変更した場合、行が表示されます... –
@MikeMcCaughanはい、それはflushを呼び出し、ブラウザは各エコー後に再描画します私は1つをフラッシュし、1つを再塗りたい。 – jcubic