これはコードです(現在は完全です):
HTML:
<div id="content" contentEditable="true" onkeyup="highlight(this)">This is some area to type.</div>
Javascript:
function highlight(elem){
// store cursor position
var cursorPos=document.selection.createRange().duplicate();
var clickx = cursorPos.getBoundingClientRect().left;
var clicky = cursorPos.getBoundingClientRect().top;
// copy contents of div
var content = elem.innerHTML;
var replaceStart = '';
var replaceEnd = '';
// only replace/move cursor if any matches
// note the spacebands - this prevents duplicates
if(content.match(/ test /)) {
elem.innerHTML = content.replace(/ test /g,' '+replaceStart+'test'+replaceEnd+' ');
// reset cursor and focus
cursorPos = document.body.createTextRange();
cursorPos.moveToPoint(clickx, clicky);
cursorPos.select();
}
}
不幸なことに、IEでただ中華料理を食べます。誰でもこのコードを「調整」して、FF でも動作させることができます!...
ありがとう
Edit[1]:
編集可能な Div およびその他... その他
このコードは、特定の単語をフォーマットされた同じ単語に置き換えます...
そして、キャレット (カーソル) は、置き換えられた単語の後に常に残ります! <<< 「これは大きな問題です」
しかし、IE で動作するだけで、FF で動作するようにこのコードを書き直すのがとても好きです...しかし、私はそれを行うことができません...とても難しいです...
誰でも助けてくれます?
編集[2]:私の問題はこの部分だけです:
// reset cursor and focus
cursorPos = document.body.createTextRange();
cursorPos.moveToPoint(clickx, clicky);
cursorPos.select();
なぜなら、moveToPotion と select 関数は IE で動作するからです... それまでは簡単です... FF には、それを可能にする別の関数セットがあります... しかし、それを行う別のコードの書き方がわかりません同じこと。わかりましたか?