В чате открывается окно со смайлами, и при нажатие на нужный смайлик его код появлялся в строке сообщения чата
<html;> <body;> <form; name="formtext"> <input; type="text" name="inputtext" value="" size="30"> <input; type="button" value="Ок"> <input; type="button" value="Смайлики" onClick='script: window.open("smile.html","", "width=400,height=600,status=no,menubar=no,toolbar=no,scrollbars=yes")'> </form> </body> </html>
Вот этой строкой открываем новое окно, в котором и происходит всё основное действие:
<input; type="button" value="Смайлики" onClick='script: window.open("smile.html",""," width=400,height=600,status=no,menubar=no,toolbar=no,scrollbars=yes")'>
Файл smile.html содержит следующее:
<html;> <head;> <title;>Улыбочки</title> <script; language=JavaScript> <!-- function Smile(s) { p=opener; if(p==null)return; p.document.forms.formtext.inputtext.value+=s; p.document.forms.formtext.inputtext.focus(); } //--> </script> </head> <body;> <img; style="CURSOR: hand" onClick="Smile('-1-')" src="images1/000001.gif"> <img; style="CURSOR: hand" onClick="Smile('-2-')" src="images1/000002.gif"> <img; style="CURSOR: hand" onClick="Smile('-3-')" src="images1/000003.gif"> <img; style="CURSOR: hand" onClick="Smile('-4-')" src="images1/000004.gif"> <img; style="CURSOR: hand" onClick="Smile('-5-')" src="images1/000005.gif"> <img; style="CURSOR: hand" onClick="Smile('-6-')" src="images1/000006.gif"> <img; style="CURSOR: hand" onClick="Smile('-7-')" src="images1/000007.gif"> <img; style="CURSOR: hand" onClick="Smile('-8-')" src="images1/000008.gif"> <img; style="CURSOR: hand" onClick="Smile('-9-')" src="images1/000009.gif"> //и ещё множество изображений </body> </html>
При щелчке по изображению вызывается функция Smile(s), где s - код смайлика. Рассмотрим эту функцию:
p=opener;
Получаем окно из которого открыли текущее.
if(p==null)return;
Если p не null продолжаем выполнять функцию.
p.document.forms.formtext.inputtext.value+=s;
Прибавляем значение кода смайлика к имеющемуся значению поля ввода в родительском окне.
p.document.forms.formtext.inputtext.focus();
Возвращаем фокус полю ввода.