Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 全屏显示后文本区域文本意外向下移动_Javascript - Fatal编程技术网

Javascript 全屏显示后文本区域文本意外向下移动

Javascript 全屏显示后文本区域文本意外向下移动,javascript,Javascript,我有一个textarea来获取用户输入。我希望输入文本根据textarea的宽度调整其大小。每次按下键时,输入文本都会调整大小,以便可以放入文本区域(当用户键入长文本时,输入文本会变小,以便放入文本区域) 代码按预期工作,但有一个有线问题除外: 当我尝试全屏显示或反之亦然时,我启动此功能,文本按预期调整大小: document.getElementsByTagName("BODY")[0].onresize = function() { console.log('Window R

我有一个
textarea
来获取用户输入。我希望输入文本根据
textarea
的宽度调整其大小。每次按下
时,输入文本都会调整大小,以便可以放入
文本区域
(当用户键入长文本时,输入文本会变小,以便放入
文本区域

代码按预期工作,但有一个有线问题除外:

当我尝试全屏显示或反之亦然时,我启动此功能,文本按预期调整大小:

document.getElementsByTagName("BODY")[0].onresize = function() {

       console.log('Window Resized..');
       setTimeout(function(){
       adjustTextSize();
       },1000);

}
但是当你开始打字并按任意键时(全屏显示后),整个文本向下移动大约20像素

如果退出全屏时退出全屏,同样的情况会再次发生,相同的
onresize
功能会执行此操作,并且正如预期的那样,我们有调整大小的文本,(退出全屏后)按任意键,文本再次向下移动

代码如下:

let textarea = document.getElementsByTagName("textarea")[0];
textarea.focus();
textarea.style.overflow = "hidden"; 

$('textarea').keydown(function(){
   adjustTextSize();
});

document.getElementsByTagName("BODY")[0].onresize = function() {

       console.log('Window Resized..');
       setTimeout(function(){
       adjustTextSize();
       },1000);

}

function adjustTextSize(){
    let font_size = 44;
    let textWidth = getTextWidth($('textarea').val(), `bold ${font_size}px Open Sans`).toFixed(2);
    let textareaWidth = $('textarea').width();
    console.log(textareaWidth, textWidth);

    while (textWidth > textareaWidth) {
           font_size -= 1;
           textWidth = getTextWidth($('textarea').val(), `bold ${font_size}px Open Sans`).toFixed(2);  
           console.log('inside while loop');             
    }
    $('textarea').css('font-size', font_size);
}


function getTextWidth(text, font) {
    var canvas = getTextWidth.canvas || (getTextWidth.canvas = document.createElement("canvas"));
    var context = canvas.getContext("2d");
    context.font = font;
    var metrics = context.measureText(text);
    return metrics.width;
}