ここではほとんどのブラウザでは、この使用してDOM Range
を行うための機能だとIEで< 9.
ライブデモ:http://jsfiddle.net/bVpqR/
コード:
は
function getUnselectedText(containerEl) {
var sel, range, tempRange, before = "", after = "";
if (typeof window.getSelection != "undefined") {
sel = window.getSelection();
if (sel.rangeCount) {
range = sel.getRangeAt(0);
} else {
range = document.createRange();
range.collapse(true);
}
tempRange = document.createRange();
tempRange.selectNodeContents(containerEl);
tempRange.setEnd(range.startContainer, range.startOffset);
before = tempRange.toString();
tempRange.selectNodeContents(containerEl);
tempRange.setStart(range.endContainer, range.endOffset);
after = tempRange.toString();
tempRange.detach();
} else if ((sel = document.selection) && sel.type != "Control") {
range = sel.createRange();
tempRange = document.body.createTextRange();
tempRange.moveToElementText(containerEl);
tempRange.setEndPoint("EndToStart", range);
before = tempRange.text;
tempRange.moveToElementText(containerEl);
tempRange.setEndPoint("StartToEnd", range);
after = tempRange.text;
}
return {
before: before,
after: after
};
}
チャームのように働いた。どうもありがとうございます。また、少し誤差があります。すべてのドキュメントとウィンドウはcontainerElに置き換えてください –
@TimurGafforov: 'document'と' window'への参照は正しいです。要素には 'getSelection()'や 'createRange()'や 'selection'プロパティはありません。元のコードは、 'elem'が' document'のような 'Document'ノードである場合にのみ機能します。 iframeなどの別のドキュメントで選択項目を操作する必要がある場合は、iframeからドキュメントとウィンドウオブジェクトを取得するためにコードを少し変更する必要があります。 –