Справочники, инструменты, документация

JavaScript: html-редактор

Программа создания html-страниц.
<html>
<head>
 <title>Демонстрационная версия</title>
</head>
<body>
 <form method="post" action="">
 <script language="JavaScript">
 document.write('<PRE><B>Помощь: </B>')
 helpon = false // ...true or false
 document.write(
 '<input type="radio" name="radiohelp" value="true" onClick = " helpon = true"> Вкл. ')
 document.write(
 '<input type="radio" name="radiohelp" value="false" checked onClick = " helpon = false"> Выкл. <BR>')
 document.write('<B>ввод HTML: </B>')
 modeindex = 0 // ...0=simple, 1=sample, 2=prompt
 document.write(
 '<input type="radio" name="radiomode" value="Copyright 1996 Ray Daly" checked onClick = " modeindex = 0 "> Простой ')
 document.write(
 '<input type="radio" name="radiomode" value="Copyright 1996 Ray Daly" onClick = " modeindex = 1"> С примером ')
 document.write(
 '<input type="radio" name="radiomode" value="Copyright 1996 Ray Daly" onClick = " modeindex = 2"> С подсказкой <BR></PRE>')
 document.write('<TABLE CELLSPACING="0" BORDER="0">')
 document.write(
 '<TR><TH><input type="button" value=" Start " onClick="HjButton(this.form,jStart)">')
 document.write('<input type="button" value=" End " onClick="HjButton(this.form,jEnd)">')
 document.write(
 '</TH><TH><input type="button" value=" Preview " onClick="preview(this.form)">')
 document.write(
 '</TH><TH><input type="button" value=" About " onClick="About(this.form)">')
 document.write(
 '</TH></TR><TR><TH><input type="button" value=" B " onClick="HjButton(this.form,jBold)">')
 document.write('<input type="button" value=" I " onClick="HjButton(this.form,jItalics)">')
 document.write('<input type="button" value=" PRE " onClick="HjButton(this.form,jPre)"> ')
 document.write('</TH><TH><input type="button" value=" H1 " onClick="HjButton(this.form,jH1)">')
 document.write('<input type="button" value=" H2 " onClick="HjButton(this.form,jH2)">')
 document.write('<input type="button" value=" H3 " onClick="HjButton(this.form,jH3)"> ')
 document.write('</TH><TH><input type="button" value=" OL " onClick="HjButton(this.form,jOL)">')
 document.write('<input type="button" value=" UL " onClick="HjButton(this.form,jUL)">')
 document.write('<input type="button" value=" LI " onClick="HjButton(this.form,jLI)"> ')
 document.write('</TH><TH><input type="button" value=" DL " onClick="HjButton(this.form,jDL)">')
 document.write('<input type="button" value=" DT " onClick="HjButton(this.form,jDT)">')
 document.write('<input type="button" value=" DD " onClick="HjButton(this.form,jDD)"><BR>')
 document.write(
 '</TH></TR><TR><TH><input type="button" value=" P " onClick="HjButton(this.form,jPara)">')
 document.write('<input type="button" value=" BR " onClick="HjButton(this.form,jBreak)">')
 document.write('<input type="button" value=" HR " onClick="HjButton(this.form,jRule)"> ')
 document.write(
 '</TH><TH><input type="button" value=" Anchor " onClick="HjButton(this.form,jAnchor)"> ')
 document.write(
 '</TH><TH><input type="button" value=" L" onClick="HjButton(this.form,jImageL)">')
 document.write('<input type="button" value=" Image " onClick="HjButton(this.form,jImage)">')
 document.write('<input type="button" value="R" onClick="HjButton(this.form,jImageR)"> ')
 document.write(
 '</TH><TH><input type="button" value=" Center " onClick="HjButton(this.form,jCenter)"> ')
 document.write('</TH></TR></TABLE>')

 function HjReset(form) { // ...
 helpon = false
 modeindex = 0
 form.TEXT.value = ""
 }

 function HTMLtag(buttonname, insertmode, inserttext, tagstart, tagmiddle, tagend, sampletext,
 sampletext2, helptext) {
 // ...this fuction defines the object HTMLtag
 this.buttonname = buttonname
 this.insertmode = insertmode
 // ...1=none 2=standard input 3=lists (UL and OL) 4=DL list 5=anchor
 this.inserttext = inserttext // ...с подсказкой
 this.tagstart = tagstart
 this.tagmiddle = tagmiddle
 this.tagend = tagend
 this.sampletext = sampletext // ...с примером между тегами
 this.sampletext2 = sampletext2
 this.helptext = helptext
 }
 jStart = new HTMLtag("Start", "2", "Введите название документа", " <HTML><HEAD><TITLE>", "",
 "</TITLE></HEAD><BODY>",
 "Введите название документа", "",
 "Теги для создания начала документа. Для закрытия документа используйте кнопку END"
 )
 jEnd = new HTMLtag("End", "1", "", " </BODY></HTML>", "", "",
 "", "",
 "Эта вставка закрывает документ.")
 jBold = new HTMLtag("B", "2", "Введите текст, который будет жирным", " <B>", "", "</B>",
 "Этот текст будет жирным", "",
 "Текст между <B> и </B> будет жирным")
 jItalics = new HTMLtag("I", "2", "Введите наклонный шрифт", " <I>", "", "</I>",
 "Этот текст будет наклонным", "",
 "Текст между <I> и </I> будет наклонным")
 jPre = new HTMLtag("PRE", "2", "Введите предворительно отформатированный текст", " <PRE>", "",
 "</PRE>",
 "Этот текст будет предворительно отформатированным", "",
 "Текст между <PRE> и </PRE> будет предворительно отформатированным")
 jPara = new HTMLtag("P", "2", "Введите текст для параграфа", " <P>", "", "</P>",
 "Текст будет параграфом до следующего знака параграфа.", "",
 "Текст от <P> и до следующего <P> будет параграфом")
 jBreak = new HTMLtag("BR", "1", "", " <BR>", "", "",
 "", "",
 "Этот тег вставит разрыв строки")
 jRule = new HTMLtag("HR", "1", "", " <HR>", "", "",
 "", "",
 "Этот тег вставит в страницу горизонтальную линию.")
 jH1 = new HTMLtag("H1", "2", "Введите текст для заголовка", " <H1>", "", "</H1>",
 "Это заголовок первого уровня", "",
 "Текст между <H1> и </H1> будет заголовком первого уровня.")
 jH2 = new HTMLtag("H2", "2", "Введите текст для заголовка", " <H2>", "", "</H2>",
 "Это заголовок второго уровня", "",
 "Текст между <H1> и </H1> будет заголовком второго уровня.")
 jH3 = new HTMLtag("H3", "2", "Введите текст для заголовка", " <H3>", "", "</H3>",
 "Это заголовок третьего уровня", "",
 "Текст между <H1> и </H1> будет заголовком третьего уровня.")
 jCenter = new HTMLtag("Center", "2", "Введите отцентрованный текст", " <CENTER>", "",
 "</CENTER>",
 "Этот текст будет отцентрован", "",
 "Текст между <CENTER> и </CENTER> будет расположен по центру.")
 jOL = new HTMLtag("OL", "3", "Введите данные для первого номера пронумерованного списка",
 " <OL><LI> ", "</LI><LI> ", "</LI></OL>",
 "Это 1 строка пронумерованного списка",
 "Следующая строка пронумерованного списка",
 "Создайте упорядоченный список помещая пункты между <LI> и </LI>")
 jOL.inserttext2 = "Введите данные для следующей строки"
 jUL = new HTMLtag("UL", "3", "Введите первый элемент для неупорядоченного списка", " <UL><LI> ",
 "</LI><LI> ", "</LI></UL>",
 "Это один элемент в простом списке", "Следующий элемент в простом списке",
 "Создайте упорядоченный список помещая пункты между <LI> и </LI>")
 jUL.inserttext2 = "Введите следующий элемент"
 jLI = new HTMLtag("LI", "2", "Введите текст для списка", " <LI>", "", "</LI>",
 "Этот элемент в списке", "",
 "Текст, помещенный между <L1> и </L1> будет один (пункт) в СПИСКЕ. Требует OL или UL."
 )
 jDL = new HTMLtag("UL", "4", "Введите элемент для СПИСКА ОПРЕДЕЛЕНИЯ", " <DL><DT>",
 "</DT> <DD>", " </DD></DL>",
 "Элемент, который будет определен", "Определение элемента",
 "СПИСКИ ОПРЕДЕЛЕНИЯ имеют два элемента: элемент и определение. Введите элемент."
 )
 jDL.inserttext2 = "Введите список "
 jDL.tagmiddle2 = '</DD> <DT>'
 jDT = new HTMLtag("DT", "2", "Введите элемент в список определений", " <DT>", "", "</DT>",
 "Элемент для списка определений", "",
 "Текст между <DT> и </DT> будет одним элементом списка. Необходимо DL.")
 jDD = new HTMLtag("DD", "2", "Введите определение для СПИСКА ОПРЕДЕЛЕНИЯ", " <DD>", "", "</DD>",
 "Это определение для СПИСКА ОПРЕДЕЛЕНИЯ", "",
 "Текст между <DD> и </DD> будет элементом списка. необходимо DL.")
 jImageL = new HTMLtag("Image", 2, "Введите адрес картинки", ' <IMG SRC="', "", '" ALIGN=LEFT>',
 "Адрес картинки", "",
 "Введите адрес картинки с выравнивание влево")
 jImage = new HTMLtag("Image", 2, "Введите адрес картинки", ' <IMG SRC="', "", '">',
 "Адрес картинки", "",
 "Введите адрес картинки")
 jImageR = new HTMLtag("Image", 2, "Введите адрес картинки", ' <IMG SRC="', "", '" ALIGN=RIGHT>',
 "Адрес картинки", "",
 "Введите адрес картинки с выравниванием вправо")
 jAnchor = new HTMLtag("Anchor", 5, "Введите адрес (например, http://www.domen.ru)", ' <A HREF="',
 '"> ', '</A>',
 "http://www.domen.ru", "Здесь описание",
 "Введите URL (например, http://www.domen.ru/index.html) c описанием.")
 jAnchor.inserttext2 = "Введите описание, например, Scriptsnetwork"

 function About(form) {
 alert('HTMLjive')
 }

 function HjButton(form, selection) { // 
 if (helpon) {
 if (confirm(selection.helptext)) {
 addHTML(form, selection)
 }
 } else {
 addHTML(form, selection)
 }
 }

 function addHTML(form, selection) {
 // ...
 cancel = false
 addText = selection.tagstart
 if (modeindex == 2) { // ...
 if (selection.insertmode != 1) { // ...
 addText += addHTMLinsert(selection, addText, form)
 if (addText == selection.tagstart) {
 cancel = true
 }
 }
 }
 if (modeindex == 1) { // ...
 addText = addText + selection.sampletext + selection.tagmiddle + selection
 .sampletext2
 }
 if (modeindex == 0) { // ...
 addText += selection.tagmiddle
 }
 addText += selection.tagend
 if (cancel == false) { // ...
 form.TEXT.value += addText
 }
 }

 function addHTMLinsert(selection, addText, form) {
 if (selection.insertmode == 2) {
 i = ""
 i = prompt(selection.inserttext, "")
 if ((i != null) && (i != "")) {
 addText = i
 } else {
 addText = ""
 }
 }
 if (selection.insertmode == 3) {
 addText = ""
 i = ""
 i = prompt(selection.inserttext, "")
 if ((i != null) && (i != "")) {
 addText = i
 while ((i != null) && (i != "")) {
 i = prompt(selection.inserttext2, "")
 if ((i != null) && (i != "")) {
 addText = addText + selection.tagmiddle + i
 }
 }
 }
 }
 if (selection.insertmode == 4) {
 i = "dummy"
 j = i
 addText = ""
 count = 0
 while ((i != null) && (i != "") && (j != null) && (j != "")) {
 ++count
 i = ""
 i = prompt(selection.inserttext, "")
 // ... used for debugging form.TEXT.value += "-->" + i + "<--"
 if ((i != null) && (i != "")) {
 j = ""
 j = prompt(selection.inserttext2, "")
 if ((j != null) && (j != "")) {
 if (count > 1) {
 addText += selection.tagmiddle2
 }
 addText = addText + i + selection.tagmiddle + j
 }
 }
 }
 }
 if (selection.insertmode == 5) { // ...Anchor
 addText = ""
 i = ""
 i = prompt(selection.inserttext, "")
 if ((i != null) && (i != "")) {
 j = ""
 j = prompt(selection.inserttext2, "")
 if ((j != null) && (j != "")) {
 addText = i + selection.tagmiddle + j
 }
 }
 }
 return addText
 }

 function preview(form) {
 msg = open("", "DisplayWindow", "toolbar=no,directories=no,menubar=yes");
 msg.document.write(form.TEXT.value);
 }
 </script>
 <b>Документ:</b><br>
 <TEXTAREA NAME="TEXT" ROWS="16" COLS="60" WRAP="VIRTUAL"></TEXTAREA>
 <INPUT TYPE="reset" VALUE="Очистить и запустить заново" onClick="HjReset(this.form)">
 </form>
</body>

</html>

Скачать пример