Rangy を使っているようですが、使い方がまったくわかりません。Rangy が何であるかを理解する前に、現在の選択を取得する方法を調べました。それを取得して、渡された値に置き換える関数を見つけました。私はそれを修正しましたが、ここにあります:
http://jsfiddle.net/fjYHr/1/
$(document).ready(function () {
$("#setlink").click(function () {
replaceSelectedText("jumplink");
});
});
function replaceSelectedText(nameValue) {
var sel, sel2, range;
if (window.getSelection) {
sel = window.getSelection();
sel2 = ""+sel; // Copy selection value
if (sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
var newA = document.createElement("a");
newA.name = nameValue;
newA.innerHTML = sel2;
range.insertNode(newA);
}
} else if (document.selection && document.selection.createRange) {
// Not sure what to do here
range = document.selection.createRange();
var newA = "<a name='" + nameValue.replace(/'/g, "") + "'>" + range.text + "</a>";
range.text = newA;
}
}
元の現在の選択を保存する方法に注意してください。次に、渡された値でセットを<a>
取得する要素に置き換えます。name
このdocument.selection
部分 (IE < 9 で使用されているようです) については、私が提供したコードが機能するかどうかは 100% 確信が持てません (実際には、選択で HTML を許可し、エスケープしません)。しかし、それは私の試みです:)