内置 HTML 编辑器显示“矩形”

问题描述

我编写了一个 HTML 编辑器,但它不起作用。不久前它可以工作,但可能是我姐姐编辑了代码(她实际上对 HTML 一无所知)

现在的问题是,每当我按下回车键时,不是简单地移动到下一行,而是创建了一个矩形。为什么?

代码如下:

const first = document.querySelector(".first");
const iframe = document.querySelector("iframe");
const btn = document.querySelector("button");

btn.addEventListener("click",() => {
  var html = first.textContent;
  iframe.src = "data:text/html;charset=utf-8," + encodeURI(html);
});


first.addEventListener('keyup',()=>{
  var html = first.textContent;
  iframe.src = "data:text/html;charset=utf-8," + encodeURI(html);
})

first.addEventListener("paste",function(e) {
        e.preventDefault();
        var text = e.clipboardData.getData("text/plain");
        document.execCommand("insertText",false,text);
    });
* {
 Box-shadow: 0 2px 3px black;
 position: fixed;
 height: 100vh;
 justify-content: center;
 align-items: center;
 border: 7px solid #36383f;
}

.first {
  background-color: #ffffff;
  width: 50%;
  overflow-x: hidden;
  overflow-y: auto;
  white-space: pre;
  Box-shadow: 0 1px 1px rgb(22,22,22);
  outline: none;
  padding: 0.4rem;
  height: 90vh;
}

.second {
  background-color: rgb(255,255,255);
  width: 50%;
  overflow-y: auto;
  white-space: pre;
  right: 0;
  Box-shadow: 0 1px 1px rgb(22,22);
  padding: 0.4rem;
  height: 90vh;
}
<div class="main-editor">
  <button class="btn">Run</button>
  <div  class="first" contenteditable>writecode</div>
  <iframe class="second" > </iframe>
</div>

解决方法

这是因为您向所有元素添加了 box-shadowborder。 从 * 中删除它们。 我将 * 改为 .first,.second

const first = document.querySelector(".first");
const iframe = document.querySelector("iframe");
const btn = document.querySelector("button");

btn.addEventListener("click",() => {
  var html = first.textContent;
  iframe.src = "data:text/html;charset=utf-8," + encodeURI(html);
});


first.addEventListener('keyup',()=>{
  var html = first.textContent;
  iframe.src = "data:text/html;charset=utf-8," + encodeURI(html);
})

first.addEventListener("paste",function(e) {
        e.preventDefault();
        var text = e.clipboardData.getData("text/plain");
        document.execCommand("insertText",false,text);
    });
.first,.second {
 box-shadow: 0 2px 3px black;
 position: fixed;
 justify-content: center;
 align-items: center;
 border: 7px solid #36383f;
}

.first {
  background-color: #ffffff;
  width: 50%;
  overflow-x: hidden;
  overflow-y: auto;
  white-space: pre;
  box-shadow: 0 1px 1px rgb(22,22,22);
  outline: none;
  padding: 0.4rem;
  height: 90vh;
}

.second {
  background-color: rgb(255,255,255);
  width: 50%;
  overflow-y: auto;
  white-space: pre;
  right: 0;
  box-shadow: 0 1px 1px rgb(22,22);
  padding: 0.4rem;
  height: 90vh;
}
<div class="main-editor">
  <button class="btn">Run</button>
  <div  class="first" contenteditable>writecode</div>
  <iframe class="second" > </iframe>
</div>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...