итак к чему я пришел Ггг (прошу строго не судить)
на странице составляем форму
Код HTML:
<form action="" method="post"><-- поле куда будут заноситься данные --><input type="hidden" class="edit_able" name="msg" value=" " /><br /><input type="submit" value="Добавить" /><-- поле для смайлов --><div class="smiles"></div>
теперь сам js
PHP код:
$(document).ready(function()
{
if($('.edit_able').length)
{
var input = $('.edit_able');
// создаем iframe
var iframe = document.createElement("iframe");
// даем ему оформление
iframe.className = 'edit_able';
// вставляем его на страницу
input.after(iframe);
var doc = "<body class='frameBody'>"+input.val()+"</body>";
iframe.contentWindow.document.open();
iframe.contentWindow.document.write(doc);
iframe.contentWindow.document.close();
// включаем редактирование
iframe.contentWindow.document.designMode = "On";
// добавляем на страницу смайлы
var smiles = [')','(','8','atlet','ban','be','blin','bomba'];
var smiles_box='';
for(i=0;i<8;i++) smiles_box += '<img src="img/smiles/'+smiles[i]+'.gif" class="smile" alt=""> ';
$('.smiles').html(smiles_box);
// и теперь при клике на смайл вставляем его в iframe
$('.smile').click(function()
{
iframe.contentWindow.document.execCommand('InsertImage', false, $(this).attr('src'));
})
// теперь 2 раза в секунду заносим содержимое iframe в наше скрытое поле
//смайлы попадают туда ввиде кода
setInterval(function()
{
$('.edit_able').val(iframe.contentWindow.document.getElementsByTagName("body")[0].innerHTML);
},500);
}
});
ну вот вобщем то до чего я докопалсо гг, опера и мозилла воспринимают все адекватно а ослик ИЕ событие клика на картинку не воспринимает...
Последний раз редактировалось Rednoise; 10.06.2009 в 01:02..
// теперь 2 раза в секунду заносим содержимое iframe в наше скрытое поле
//смайлы попадают туда ввиде кода
setInterval(function()
{
$('.edit_able').val(iframe.contentWindow.document.getElementsByTagName("body")[0].innerHTML);
},500);
Зачем тут использовать Таймер? Добавляй сразу при изменении контента во фрейме
ну я просто не стал заморачиваться с обработкой нажатий клавиш и т.д. + я незнаю как определить копипаст
Просто убери интервал
PHP код:
... Код ...
// и теперь при клике на смайл вставляем его в iframe
$('.smile').click(function()
{
iframe.contentWindow.document.execCommand('InsertI mage', false, $(this).attr('src'));
})
//смайлы попадают туда ввиде кода
$('.edit_able').val(iframe.contentWindow.document. getElementsByTagName("body")[0].innerHTML);
FireFenix, угу счас, ну во первых чтоб уж при клике обновлялось то надо внести эту строку кода в саму функцию клика, а во вторых - как же текст который также будет вводиться? не проблема - отслеживать keydown keypress keyup, остается копипаст - как его отследить?