W przeglądarkach innych niż IE < = 8, będzie to zrobić:
function placeCaretAfterNode(node) {
if (typeof window.getSelection != "undefined") {
var range = document.createRange();
range.setStartAfter(node);
range.collapse(true);
var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
}
}
Jednak niektóre przeglądarki (ones zwłaszcza opartych na silniku WebKit) mają stałe pomysłów, o których pozycjach w dokumencie obowiązują dla karetki i normalizuje każdy zakres dodawany do zaznaczenia, aby zachować zgodność z tymi pomysłami. Poniższy przykład będą robić to, co chcesz w Firefoksie i IE 9, ale nie w Chrome lub Safari w wyniku:
http://jsfiddle.net/5dxwx/
Żaden z obejścia są dobre. Dostępne są następujące opcje:
- dodać charakterem zerowej szerokości spacji po rozpiętości i wybierz ją
- użyć
<a>
elementu zamiast <span>
ponieważ WebKit czyni wyjątek dla <a>
elementów
Dzięki za odpowiedź. Udało mi się to zrobić w inny sposób. –
@halfer Nie mogę: "Głosowanie wymaga 15 reputacji". –
@Laurens: prawda, możesz teraz! ': -p' – halfer