Najważniejszym elementem tworzenia edytora WYSIWYG jest właściwość
document.designMode
. Powoduje ona, że dokument wyświetlany w przeglądarce można po prostu edytować.
document.designMode = 'on';Przetestuj to
Stosowanie iframek
Zwykle edytory WYSIWYG nie otwierają się w nowym oknie, ale są już wstawione stronę. Niestety właściwość designMode moży być używana jedynie w odniesienu do całego dokumentu. W tym przypadku z pomocą przychodzą iframki z ich właściwością contentWindow. Wystarczy utworzyć taką pływającą ramkę.
<iframe id="iframka" onload = "document.getElementById('iframka').contentWindow.document.designMode = 'on';" />
Formatowanie
Niestety przeglądarki nie zawierają paska narzędzi, który umożliwiałby formatowanie tekstu. Istnieje jednak metodaexecCommand(operacja, false, argument)
obiektu document
która pozwala operować na zaznaczeniu. Pierwszy argument to nazwa komendy która ma zostać wykonana np. "bold"
czy "createlink"
. Drugi to zawsze fałsz. Trzeci to argument to parametr taki jak adres linku czy kolor czcionki. Większość poleceń wymaga podania null
. W umieszczonej tabeli znajduję się skrócony opis komend dla tej funkcji. "Pełną wersję" można znaleźć na stronie http://www.quirksmode.org/dom/execCommand.html.
Polecenie | Argument | Opis |
---|---|---|
bold | null |
Pogrubia tekst |
backcolor | kolor | Zmienie podświetlenie tekstu (w firefoxie użyj hilitecolor) |
Tabelka w rozbudowie
Przykład
<a onclick="document.getElementById('iframka2').contentWindow.document.execCommand('bold', false, null);" href="javascript:void(0)">Bold</a> <a href="javascript:void(0)" onclick="alert(document.getElementById('iframka2').contentWindow.document.body.innerHTML)">Pokaż HTML</a> <a href="javascript:void(0)" title="Użyj do testowania komend" onclick="document.getElementById('iframka2').contentWindow.document.execCommand(prompt('Nazwa komendy'), false, prompt('Argument (lub anuluj dla null)'));">execCommand</a> <br /> <iframe id="iframka2" onload="document.getElementById('iframka2').contentWindow.document.designMode='on'; document.getElementById('iframka2').contentWindow.document.body.innerHTML='trochę tekstu'"></iframe>
Brak komentarzy:
Prześlij komentarz