我有一个textarea
框,用户在其中输入 HTML,然后输出到iframe
.
这在使用大多数 HTML 标记时都可以正常工作,但如果您使用<script>
标记(为了添加 JavaScript),则script
元素不会转移到iframe
.
例如,我应该能够在中键入以下内容textarea
:
<script>
function test() {
alert('test');
}
</script>
<button onclick="test()">test</button>
按钮被添加到iframe
但由于script
元素显然没有,单击按钮不会触发alert()
.
一种解决方法是alert()
在按钮单击时声明,而不是使用预先编写好的函数;此解决方法如下所示:
<button onclick="alert('test')">test</button>
然而,这只允许一个 javascript 命令(而用户可能希望使用具有多个命令的函数)。
你可以在这里看到网页
填充 iframe 内容的 JavaScript 是:
(function () {
$('.grid').height($(window).height());
var frame = $('iframe'),
contents = frame.contents(),
body = contents.find('body'),
styleTag = contents.find('head')
.append('<style></style>')
.children('style');
$('textarea').focus(function () {
var $this = $(this);
$this.keyup(function () {
if ($this.attr('id') === 'html') {
body.html($this.val());
} else {
styleTag.text($this.val());
}
});
});
})();