私は、テキストの小さなブロックの構文強調表示を行うdesignModeのiframeにリッチテキストエディタを持っています。キーアップの強調表示を更新したいのですが、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ブラウザ専用ですか?あなたは、あなたよりも機能テストが必要です。 * wind *オブジェクトは 'addRange(wind.range)'のどこから来ますか? – RobG
これは私がChromeで自分自身を書いているエディターですが、IE以外のすべてのブラウザーにとって理想的です。風については、私の間違い - ウィンドウのオブジェクトをiframeのために保持するために風が使用されていたので、フレーム自体の中に関数を持たせる方が簡単でした。上記から削除されました。それはエラーではありませんでしたが、そこにはいけませんでした。 – Monchoman45