【问题标题】:Built HTML editor displaying ‘rectangles’内置显示“矩形”的 HTML 编辑器
【发布时间】:2021-02-09 13:05:49
【问题描述】:

我编写了一个 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, 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>

【问题讨论】:

    标签: javascript html css web w3c


    【解决方案1】:

    这是因为您在所有元素中添加了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, 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>

    【讨论】:

    • 谢谢,您的代码帮助了我,但我有一些疑问。为什么* 中没有包含btn?另外,为什么回车键会产生一个矩形(是否触发元素的形成),@NaolChala
    • 当您按下enter 时,它会创建新的&lt;div&gt; 元素
    • 好的,谢谢!但是,你为什么不把btn 保留在* 中,@NaolChala
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多