嘿 Stackoverflow 社区,
我编写了一个示例代码,应该在粘贴时清理 HTML 代码,但它没有按预期工作。在每次粘贴时,它都会复制<textarea>
并且粘贴不起作用。
这是 JsFiddle:http: //jsfiddle.net/Kxmaf/214/
任何帮助深表感谢 :)
嘿 Stackoverflow 社区,
我编写了一个示例代码,应该在粘贴时清理 HTML 代码,但它没有按预期工作。在每次粘贴时,它都会复制<textarea>
并且粘贴不起作用。
这是 JsFiddle:http: //jsfiddle.net/Kxmaf/214/
任何帮助深表感谢 :)
新版本:http: //jsfiddle.net/Kxmaf/218/
你是对的setTimeout()
,不知道粘贴事件延迟。现在,我在 FF 上看到,这document.execCommand()
有点错误,所以我简化了很多(不再关注,execCommand):
$editor.on('paste, keydown', function() {
var $self = $(this);
setTimeout(function(){
var $content = $self.html();
$clipboard.val($content);
},100);
});
这个怎么样:http: //jsfiddle.net/Kxmaf/215/
$editor.on('paste, keydown', function() {
var $self = $(this),
$content = $self.html();
$clipboard.val('').focus();
document.execCommand('insertHTML', false, $content);
$self.html($content);
placeCaretAtEnd($self);
});
没有了setTimeout()
。我也添加了 keydown ,因为它对我来说听起来更好;)如果你愿意,你可以删除它。这样做:
$self.html($content);
现在是否相关。placeCaretAtEnd()
来自https://stackoverflow.com/a/4238971/460368我稍微修改了一下。