için daha sonra kullanmak üzere bir seçim kaydetme Bir küçük metin bloğu için sözdizimi vurgulayan designMode ile iframe'de zengin bir metin editörü var. Anahtarlamadaki vurgulamayı güncellemeyi isterim, ancak DOM ile karıştırmak çerçevenin bulanıklaşmasına neden olur, böylece bir tuşa her basışınızda kaybolur ve artık yazamazsınız. Eğer ayrıştırıcı, çarpanın nerede olduğunu hatırlayabiliyorsa ve iframe tekrar odaklanıp çarpanı değiştiriyorsa bu bir sorun olmaz. Ben getSelection()
ve akrabalarını okudum, ama görünüşte onkeyup seçimi en azından Chrome - getSelection()
'u bir onkeyup içinde çağırarak seçimi kaldırır, her zaman boş bir seçim verir. Bunun etrafında bir yolu var mı?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>
Hangi editörü kullanıyorsunuz? Bu mevcut bir mi yoksa kendi mi? –
Bu sadece Gecko tarayıcıları için mi? Sizden daha fazla özellik testi yapmalısınız. * Wind * nesnesi 'addRange (wind.range)' 'dan nereden geliyor? – RobG
Bu, herkes için ideal olarak tüm tarayıcılarda (IE hariç) Chrome'da yazıyorum. Rüzgâra gelince, benim hatam - rüzgar, iframe için pencere nesnesini tutuyordu, daha önce fark ettim ki, fonksiyonun çerçevenin kendisinde olması daha kolay olurdu. Yukarıdan kaldırıldı; Hata olmasa da orada olmamalıydı. – Monchoman45