【发布时间】:2012-11-27 20:31:28
【问题描述】:
我想知道为什么下面的示例代码不能正常工作:
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
textarea, iframe {
display:block;
width:300px;
height:100px;
margin:3px;
padding:3px;
border:1px solid #CCC;
}
</style>
</head>
<body>
<textarea id="field" onfocus="getFocus();" onblur="loseFocus();">This is some text.</textarea>
<iframe name="target"></iframe>
<script>
var textarea = document.getElementById('field');
var iframe = window.target.document;
function displayResult() {
if (textarea.value) {
iframe.open();
iframe.write(textarea.value);
iframe.close();
}
window.setTimeout(displayResult, 10);
}
function getFocus() {
if (textarea.value == textarea.defaultValue) {
textarea.value = '';
}
}
function loseFocus() {
if (textarea.value == '') {
textarea.value = textarea.defaultValue;
}
}
displayResult();
</script>
</body>
</html>
演示:http://jsfiddle.net/RainLover/4ksMR/
iframe 内容应该实时更新——只要 textarea 内容通过键盘或鼠标发生更改。此方法是oninput 事件的替代方法。但是由于 oninput 在不同的浏览器中没有得到很好的支持,我决定创建一个计时器来比较当前文本字段的值和它在 10 毫秒之前的值。
【问题讨论】:
-
它应该做什么而不是做什么?我看到一个文本区域,其内容每 10 毫秒(100 倍/秒,非常频繁)写入 iframe。从我对代码的阅读来看,这似乎正是它应该做的。
-
我们需要比“无法正常工作”更多的信息。你想做什么?它在做什么?
-
它应该是动态更新 iframe 并将 textarea 内容值写入其中。
-
@RainLover 这就是它的作用。它在 Chrome 和 FF 中完美运行。
-
恐怕这不是真的。
标签: javascript iframe textarea