javascript - 从文本区域执行 jquery

标签 javascript jquery html

我创建了一个小项目,使用eval()在文本区域内执行javascript

HTML

<textarea id='js'><textarea>

<iframe id="inlineframe"></iframe>

JAVASCRIPT

(function(){
$('#js').on('keyup', runjs);
});

function runjs(){ document.getElementById('inlineframe').contentWindow.eval($('#js').val());
}

效果很好吗?但是如果我不只是想执行 javascript 该怎么办?如果我想让它执行 jquery 怎么办?如何将其包含在函数中?

最佳答案

您的 HTML 和 JS 中存在一些错误。

  • 没有结束文本区域标记,只是另一个文本区域元素(忘记了/)
  • 您封装了一个匿名函数,但没有调用它(忘记了末尾的 (),所以它不是 IIFE)

除此之外,还有一种简单的方法可以将 jQuery 添加到 iFrame:通过向 iFrame 添加 src 属性并将其指向另一个包含 jQuery 的 html 文件,就像当前的 html 文件一样。

如果你不想创建另一个文件,你可以通过 JS 添加 jQuery 文件,如下所示:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea id="js"></textarea>
<iframe id="inlineframe"></iframe>
<script>
  function runjs() {
    document
      .getElementById("inlineframe")
      .contentWindow.eval($("#js").val());
  }
  (function() {
    $("#js").on("keyup", runjs);
  })();

  const iFrameHead = document.getElementById("inlineframe").contentDocument
    .head;
  const script = document.createElement("script");
  script.src =
    "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js";
  iFrameHead.appendChild(script);
</script>

关于javascript - 从文本区域执行 jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55748496/

相关文章:

javascript - 密码正则表达式,至少包含 2 个大写字母、2 个小写字母、2 个符号和 2 个任意顺序的数字

javascript - RadioButton 有值虽然没有选中

javascript - 如何让这样的代码在 JsFiddle.net 中运行?

Javascript增加和减少按钮是2、5和10的倍数

javascript - 使用 webpack 2 将 .scss 文件提取为 .css

javascript - 使用 Javascript 拦截或捕获 Ajax 调用

javascript - 为什么用于导入订单的 Eslint 插件在 CRA 中不起作用?

javascript - JSON.stringify 和 JSON.parse 在 IE9 中不起作用?

javascript - 使用 jQuery 渐进式显示

javascript - 如何使事件页面在右侧有边框?