2011-07-02 14 views
5

Zadzwoniłem pod numer execCommand, aby pogrubić zaznaczony tekst lub ustawić jego kolor. Ale ostatnio muszę użyć execCommand w pewnym zakresie, a nie w zaznaczonym tekście.execCommand w zakresie

Czy mogę to zrobić, a jeśli tak, to w jaki sposób?

Odpowiedz

7

Możesz, ale to musi być wybór. Więc innymi słowy, wykonaj następujące czynności:

  • zachować bieżący wybór
  • Zrób nowy wybór oparty na Range
  • Wykonaj execCommand
  • przywrócić poprzedni wybór

You można utworzyć selection z zakresów (przeglądarek innych niż IE) z następującym kodem:

var selection = window.getSelection(); 
selection.removeAllRanges(); 
selection.addRange(range); 

Dzięki IE można bezpośrednio wykonywać obiekty execCommand na obiektach TextRange, więc cały proces nie będzie potrzebny.

+0

To brzmi dobrze. Jedno pytanie (jako że jestem początkującym w javascript), jak mógłbyś dokonać nowego wyboru? Dzięki. – Joshua

+1

@Joshua Zaktualizowałem swoją odpowiedź małym przykładem. – Niklas

+0

Dzięki, teraz działa prawie idealnie. :) – Joshua