爲了防止按鍵從插入字符到編輯器的內容,添加一個偵聽器keypress
事件iframe的文件並調用事件的preventDefault()
方法(或設置returnValue
到false
在IE < 9):
var iframe = document.getElementById("your_iframe_id");
var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
if (iframeDoc.addEventListener) {
iframeDoc.addEventListener("keypress", function(e) {
e.preventDefault();
}, false);
} else if (iframeDoc.attachEvent) {
iframeDoc.attachEvent("onkeypress", function(e) {
e.returnValue = false;
});
}
要根據整個可編輯內容中的字符偏移量來獲取插入符號的位置,可以使用下面的函數,改編自this answer。
function getCaretCharacterOffset(iframe) {
var win = iframe.contentWindow, doc = win.document;
var caretOffset = 0;
if (typeof win.getSelection != "undefined") {
var range = win.getSelection().getRangeAt(0);
var preCaretRange = range.cloneRange();
preCaretRange.selectNodeContents(element);
preCaretRange.setEnd(range.endContainer, range.endOffset);
caretOffset = preCaretRange.toString().length;
} else if (typeof doc.selection != "undefined" && doc.selection.type != "Control") {
var textRange = doc.selection.createRange();
var preCaretTextRange = doc.body.createTextRange();
preCaretTextRange.moveToElementText(element);
preCaretTextRange.setEndPoint("EndToEnd", textRange);
caretOffset = preCaretTextRange.text.length;
}
return caretOffset;
}
alert(getCaretCharacterOffset(iframe));
謝謝,這正是我所需要的。 – user782929 2011-07-09 10:25:07