javascript - 从单独的文本区域标记和执行 HTML、CSS 和 JavaScript

标签 javascript jquery html css iframe

我使用在 iframe 中输出的 jQuery 函数找到了不同文本区域中 HTML 和 CSS 实时标记的代码:

HTML

<div class="container grid">
   <form>
      <h3>HTML</h3>
      <textarea id="html" class="edit"></textarea>     // TEXTAREA FOR HTML

      <h3>CSS</h3>
      <textarea id="css" class="edit"></textarea>       // TEXTAREA FOR CSS
   </form>
</div>
<div class="output grid">
   <iframe></iframe>
</div>

JQUERY 用于标记

function() {
   $(".grid").height($(window).height());

   var contents = $("iframe").contents(),
       body = contents.find("body"),
       styleTag = $("<style></style>").appendTo(contents.find("head"));

   $("textarea.edit").keyup(function() {
      var $this = $(this);
      if ($this.attr("id") === "html") {
         body.html($this.val());
      } else {
         // it had to be css
         styleTag.text($this.val());
      }
   });
})();

如果我想要另一个用于 javascript 的文本区域怎么办?我猜你不能实时执行它所以我必须包含一个按钮来运行 eval() 但是如何呢?

最佳答案

在您的 HTML 中,您可以为 javascript 代码设置另一个文本区域。

在您的 textarea.edit 事件处理程序中,您可以添加另一个 javascript 检查并使用类似这样的东西 -

$iframeEl.append(`<script>${textarea.val()}</script>`); 

这一行也会执行您的脚本,因为浏览器会在遇到 DOM 更改时重新解析文档,并且还会执行脚本标记。

我们无论如何都应该避免使用 eval 关键字,因为它是一项昂贵的操作,建议不要使用。

关于javascript - 从单独的文本区域标记和执行 HTML、CSS 和 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55570346/

相关文章:

javascript - Sweet Alert 中使用 JSX 代替 HTML

javascript - 选择 "belong"到特定 <th> 元素的所有 <td> 元素

html - 在外部 div 之上显示内部 div

jquery - 用于更改包含 href 的 div 颜色的 CSS

javascript - 未捕获的类型错误 : Cannot read property 'querySelector' of null when using with html

javascript - 除了使用绝对位置或固定位置之外,还有其他方法可以使用 CSS 使元素不影响页面的流动吗?

javascript - 如何突出显示在线测验的正确和错误答案?

jquery - 在 Angular 2 中操作 Dom

Jquery checkbox .prop click 防止默认行为

javascript - 如何从维基百科表中获取第一列值的列表?