javascript - 如何在 iframe 中编译 html、css 和 js 代码
问题描述
试图创建一个简单的 jsfiddle 应用程序
在最终结果上 - 单击 iframe 内的按钮应该使标题成为背景silver
这个怎么做?
$('button').on('click', function(){
var ht = $('#ht').val();
var cs = $('#cs').val();
var js = $('#js').val();
var str = $('#frame')[0].innerHTML;
str = str.replace('~ht', ht);
str = str.replace('~cs', cs);
str = str.replace('~js', js);
$('#frame').attr('src', str);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>RUN</button>
<br><br>
<textarea id="ht">
<button>CLICK</button>
<div class='title'>lorem</div>
</textarea>
<textarea id="cs">
.title{
background:gold;
}
</textarea>
<textarea id="js">
$('button').on('click', function(){
$('.title').css('background', 'silver');
});
</textarea>
<iframe id="frame">
<!DOCTYPE html>
<head>
<style>~st</style>
</head>
<body>
~ht
</body>
</html>
</iframe>
解决方案
您可以使用srcdoc
指定要在内嵌框架中显示的页面的 HTML 内容。
编辑
添加<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
在内部<textarea id="ht">
,以便 iframe 可以加载jquery
和绑定$('button').click
。
已更正$('.title').css('background', 'silver');
。
stackoverflow
fiddle
我猜有问题。它不允许我使用</script>
. 所以我需要写一些解决方法并使用</ script></html>'.replace('/ scrip', '/scrip');
.
现在它按预期工作,单击按钮将改变颜色。
在下面试试。
$('button').on('click', function() {
var str = '<html><body>~ht</body><style>~cs</style><script>~js</ script></html>'.replace('/ scrip', '/scrip');
str = str.replace('~ht', $('#ht').val());
str = str.replace('~cs', $('#cs').val());
str = str.replace('~js', $('#js').val());
$('#frame').attr('srcdoc', str);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>RUN</button>
<br><br>
<textarea id="ht">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>CLICK</button>
<div class='title'>lorem</div>
</textarea>
<textarea id="cs">
.title {
background:gold;
}
</textarea>
<textarea id="js">
$('button').on('click', function() {
$('.title').css('background', 'silver');
});
</textarea>
<iframe id="frame"></iframe>
推荐阅读
- reactjs - TypeError:arrayObject.sort 不是反应笑话酶中的函数
- ios - 使用“隐藏我的电子邮件”选项问题登录 Apple
- django - 芹菜节拍任务挂起没有任何错误
- visual-studio - 由于缺少引用,无法在 Visual Studio 2019 中安装扩展
- python - Mypy错误:json.decoder.JSONDecodeError:未终止的字符串开始于:行x列y(char z)
- typescript - 如何在 javascript 文件中删除此打字稿错误?
- mysql - MySQL 查询总共获得前 10 个“数量”
- reactjs - navigation.goBack() 在嵌套导航中不起作用
- ios - 在 testflight 上部署 ios 应用程序
- spring-boot - Consul Connect 中 Prometheus 的 Spring Boot 执行器指标