【问题标题】:Browser scroll bar shift after adding an image with javascript使用javascript添加图像后浏览器滚动条移位
【发布时间】:2020-02-20 12:39:39
【问题描述】:

我有一个带有图片上传的活动创建页面。选择图像后,图像会在浏览器中预览。添加图像后滚动时,我看到底部滚动条停留在屏幕中间,直到我专注于输入元素。例如,当我专注于描述文本区域时,中间的滚动条消失了。

工作版本在 jsbin 中,请尝试多次选择图像。 jsbin中的问题:

https://jsbin.com/wigawededo/1/edit?html,css,js,output

我的电脑问题:

选择图像后,我会使用以下代码预览它:

function showImage() {
  var imageSelector = document.getElementById("image");
  var image = document.getElementById("image").files[0];
  var reader = new FileReader();
  reader.onload = function(e) {
    const prevImage = document.querySelector("#previewImage");
    if (prevImage) prevImage.parentNode.removeChild(prevImage);

    const prevImageLabel = document.querySelector("#previewImageLabel");
    if (prevImage) prevImageLabel.parentNode.removeChild(prevImageLabel);

    var newImage = document.createElement("img");
    newImage.style.maxHeight = "300px";
    newImage.style.maxWidth = "300px";
    newImage.id = "previewImage";
    newImage.src = e.target.result;

    var imageLabel = document.createElement("p");
    imageLabel.innerHTML = "Preview image:";
    imageLabel.id = "previewImageLabel";

    imageSelector.parentNode.insertBefore(
      imageLabel,
      imageSelector.nextSibling
    );
    imageSelector.parentNode.insertBefore(
      newImage,
      imageSelector.nextSibling.nextSibling
    );
  };
  if (image) reader.readAsDataURL(image);
  else {
    const prevImage = document.querySelector("#previewImage");
    if (prevImage) prevImage.parentNode.removeChild(prevImage);
    const prevImageLabel = document.querySelector("#previewImageLabel");
    if (prevImage) prevImageLabel.parentNode.removeChild(prevImageLabel);
  }
}

文件选择器输入具有#image id。注意,如果没有选择文件,此代码会删除预览图像。

我只是想知道为什么会这样。你能想出一个解决办法吗?谢谢。

注意:我在 ubuntu linux 上使用 chrome

【问题讨论】:

  • 我假设您使用的是 FileReaderInstance.readAsDataURL(fileElement.files[0]) 并且此代码在 FileReaderInstance.onload = function(){} 内,但您没有向我们展示足够的代码来确定您的问题。
  • 好的,我正在添加完整代码,抱歉
  • 为什么不向我们展示 (意思是除了我之外的所有人,因为时间已晚) 一个 HTML 和 CSS 的工作示例。

标签: javascript html google-chrome user-interface browser


【解决方案1】:

您的某些内容必须出现在屏幕之外。尝试使用溢出:隐藏或尝试减少输入/其他元素的宽度。

【讨论】:

  • 感谢您的回复,我尝试在表单中添加溢出:隐藏。现在它发生的频率降低了,但当我尝试多次时仍然会发生。
  • @srknl,这个评论毫无意义。
猜你喜欢
  • 2010-11-15
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 2018-08-31
  • 1970-01-01
相关资源
最近更新 更多