div や span などの何らかの要素で文字列または html から選択を取得し、標準準拠のブラウザーでうまく機能する MaxArt の助けを借りて書式設定するためのスクリプトをまとめました。ただし、古いバージョンの IE では、選択範囲は取得できますが、開始点と終了点を取得する方法がありません。開始点と終了点は、選択を操作して文字列に戻すために必要です。
SelectionStart または SelectionEnd は、テキストエリアでは機能しますが、div またはスパンでは機能しません。以下の MaxArt のご厚意により、標準準拠のブラウザで動作します。span と div の古いバージョンの IE で動作するものを誰かが推奨できますか?
ありがとう!
JS
function editText() {
//var sel = document.getElementById('displaytext').textContent;
//alert(sel);
var sel = getSelection();
alert(sel);
var rng, startSel, endSel, sel;
if (!sel.rangeCount
|| displaytext.compareDocumentPosition((rng = sel.getRangeAt(0)).startContainer) === Node.DOCUMENT_POSITION_PRECEDING
|| displaytext.compareDocumentPosition(rng.endContainer) === Node.DOCUMENT_POSITION_FOLLOWING ) {
sel = "";
}
else {
startSel = displaytext.compareDocumentPosition(rng.startContainer) === Node.DOCUMENT_POSITION_FOLLOWING ? 0 : rng.startOffset;
endSel = displaytext.compareDocumentPosition(rng.endContainer) === Node.DOCUMENT_POSITION_PRECEDING ? displaytext.textContent.length : rng.endOffset;
sel = displaytext.textContent.substring(startSel, endSel);
}
}
HTML
<span id = "displaytext">HERE IS A BUNCH OF TEXT THAT I WANT TO GRAB A SELECTION FROM</span> <a href="javascript:void(0)" onclick="editText()">link</a>