Di IE11, execCommand tidak berfungsi dengan baik. Saya menggunakan kode di bawah ini untuk IE11
<div class="wmd-input" id="wmd-input-md" contenteditable=true>
adalah kotak div saya.
Saya membaca data clipboard dari window.clipboardData dan memodifikasi textContent div dan memberi tanda sisipan.
Saya memberikan batas waktu untuk menyetel tanda sisipan, karena jika saya tidak menyetel batas waktu, tanda sisipan akan menjadi akhir div.
dan Anda harus membaca clipboardData di IE11 dengan cara di bawah ini. Jika Anda tidak melakukannya, karakter baris baru tidak ditangani dengan benar, jadi tanda sisipan salah.
var tempDiv = document.createElement("div");
tempDiv.textContent = window.clipboardData.getData("text");
var text = tempDiv.textContent;
Diuji di IE11 dan chrome. Ini mungkin tidak berfungsi di IE9
document.getElementById("wmd-input-md").addEventListener("paste", function (e) {
if (!e.clipboardData) {
//For IE11
e.preventDefault();
e.stopPropagation();
var tempDiv = document.createElement("div");
tempDiv.textContent = window.clipboardData.getData("text");
var text = tempDiv.textContent;
var selection = document.getSelection();
var start = selection.anchorOffset > selection.focusOffset ? selection.focusOffset : selection.anchorOffset;
var end = selection.anchorOffset > selection.focusOffset ? selection.anchorOffset : selection.focusOffset;
selection.removeAllRanges();
setTimeout(function () {
$(".wmd-input").text($(".wmd-input").text().substring(0, start)
+ text
+ $(".wmd-input").text().substring(end));
var range = document.createRange();
range.setStart(document.getElementsByClassName("wmd-input")[0].firstChild, start + text.length);
range.setEnd(document.getElementsByClassName("wmd-input")[0].firstChild, start + text.length);
selection.addRange(range);
}, 1);
} else {
//For Chrome
e.preventDefault();
var text = e.clipboardData.getData("text");
var selection = document.getSelection();
var start = selection.anchorOffset > selection.focusOffset ? selection.focusOffset : selection.anchorOffset;
var end = selection.anchorOffset > selection.focusOffset ? selection.anchorOffset : selection.focusOffset;
$(this).text($(this).text().substring(0, start)
+ text
+ $(this).text().substring(end));
var range = document.createRange();
range.setStart($(this)[0].firstChild, start + text.length);
range.setEnd($(this)[0].firstChild, start + text.length);
selection.removeAllRanges();
selection.addRange(range);
}
}, false);