我在iframe中有一個富文本編輯器,designMode爲小塊文本進行語法高亮顯示。我希望它更新keyup上的突出顯示,但與DOM混淆會導致框架模糊,因此,每次按下某個鍵時,脫字符號都會消失,而且您無法再鍵入。如果解析器可以記住插入符號的位置,那麼這不會成爲問題,然後重新調整iframe並替換插入符號。我已閱讀getSelection()
及其親屬,但顯然onkeyup刪除了選擇,至少在Chrome中 - 在onkeyup中調用getSelection()
總是產生空選擇。有沒有解決的辦法?保存一個選擇以供將來在JS中使用
這是我有:
<iframe>
<html>
<head>
<script>
function parse() {
if(window.getSelection().type != 'None') {
var range = window.getSelection().getRangeAt(0);
}
var text = document.body.textContent;
//Parse text, output is stored in newtext
document.body.innerHTML = newtext;
document.body.focus();
if(range) {
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
}
}
</script>
</head>
<body onload="document.designMode = 'on'; document.onkeyup = parse;">
Text entered appears here
</body>
</html>
</iframe>
哪些是你使用編輯器?這是現有的還是您自己的? –
這僅適用於Gecko瀏覽器嗎?你應該比功能測試更適合你。在'addRange(wind.range)'中,* wind *對象來自哪裏? – RobG
這是一個編輯器,我正在編寫自己的Chrome瀏覽器,雖然理想的所有瀏覽器(IE除外)。至於風,我的錯誤 - 用於保持iframe的窗口對象的風,我才意識到在框架本身內部具有該功能會更容易。從上面移除;它不應該在那裏,儘管這不是錯誤。 – Monchoman45