javascript - Document.execCommand 不更新当前事件元素

标签 javascript html execcommand

我有一个包含输入标签的前置标签。有一个绑定(bind)到 pre 标记的粘贴事件监听器。

$(function() {
if (document.querySelector('pre[contenteditable="true"]') != null) {
	    	document.querySelector('pre[contenteditable="true"]').addEventListener("paste", function(e) {
	    		e.preventDefault();
          //alert("test");
	    		var text = e.clipboardData.getData("text/plain");
	    		document.execCommand("insertHtml", false, text);
	    	});
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<pre id="previewEmailBody" class="blurbBody" placeholder="Reply" style="display:block" contenteditable="true">Testing
<input class="emailBodyToken" name="[Test]" size="54" value="[Test]" >
Testing</pre>

现在 - 如果我点击输入元素并粘贴文本 - 它不会更新输入元素,而是更新 pre 元素中的文本。

上述行为仅在 firefox 中观察到。在 chrome 中,它会按预期更新输入元素。我也希望在 Firefox 中有相同的行为。请提出解决此问题的方法。

工作示例: https://jsfiddle.net/5mwk0bxc/7/

最佳答案

如果事件针对 input 元素,则需要让事件发生。

$(function() {
if (document.querySelector('pre[contenteditable="true"]') != null) {
            document.querySelector('pre[contenteditable="true"]').addEventListener("paste", function(e) {
        if (e.explicitOriginalTarget.tagName !== "INPUT")
                {
          e.preventDefault();
          //alert("test");
                var text = e.clipboardData.getData("text/plain");
                document.execCommand("insertHtml", false, text);
            }
    });
}
});

更新的 JS fiddle

https://jsfiddle.net/5mwk0bxc/9/

Working

关于javascript - Document.execCommand 不更新当前事件元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49899735/

相关文章:

html - 如何使用 `execCommand("insertoredlist")`?

javascript - execCommand ('copy' ) 无法以编程方式工作,仅当通过 DevTools 控制台执行时

javascript - 如何获取使用 document.execCommand 突出显示文本时创建的元素

javascript - 谷歌地图渲染错误

javascript - Vee 验证在 vue 设置后获取先前的值

javascript - 如何获取输入值的索引不为空

javascript - 我使用 bcryptjs compare 的结果返回 false。将明文与来自数据库 (mongodb) 的散列密码进行比较时。(node-js)

javascript - Chart.js:图表未在 iframe 中调整大小

javascript - 在 Angular 4 中连续循环 CSS 样式

javascript - js如何从数组中取出最小的两个数?