toltec-info
если так боитесь затормозить загрузку (хотя вероятнее - у вас слабый канал) - проксируйте скрипт _________________ До выхода LiteDiary 0.3.0:парам-пам-пам-пам! Она уже здесь!
она сильно будет тормозить загрузку страницы, не в курсе?
Не сильно, размер скрипта 11 Кб, вот на лишних 11 Кб страница загрузится медленее.Другой вопрос, что ПОСЛЕ загрузки страницы нужно будет время, чтобы скрипт выполнился, но скорее всего это время будет незначительным по сравнению с загрузкой. _________________ Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)
Спасибо, но это не то, что я ищу. Это ущербное подобие, да ещё и рекламу свою вешают.
Написал автору сайта, на котором расположен желанный скрипт (см выше), он ответил следующее:
Цитата:
...скрипт был разработан самостоятельно для сайта. Он предполагает
использование яваскрипта и серверного php-скрипта. То, что касается
ява-скрипта, доступно при сохранении страницы Как HML и там - самое главное, чем вы и можете воспользоваться. php - реализует второстепенную функцию.
Может быть, найдутся знающие люди и помогут мне вычленить из сайта скрипт и объяснить, что и как нужно сделать, чтобы он корректно заработал? Думаю, что этот скрипт будет очень полезен многим владельцам сайта.
правда как я понимаю строчка var sender_ip='203.97.178.76'; должна генерится php используя ip адрес пользователя (без генерации работать будет, но ip адрес будет левый, как генерить ip обяснять не буду это элементарно, см. инет).
Создайте файл send_error.js, в нем будет текст (в нем надо заменить строчку action=\"/error_sending/send_error.php на php скрипт обрабатывающей результаты или отправляющий результаты mail'om на нужный вам ящик, опять таки обяснять как написать элементарный php скрипт по отправки на почтовый ящик результатов заполнения формы не буду, тем более теме "полезные скрипты" этого форума похожий скрипт есть):
Код:
//Использование: <script type="text/javascript" src="/error_sending/send_error.js"></script>
// или include_once($my_DOCUMENT_ROOT."error_sending/client_send_error.php");
document.write("<font size=2><font size=4 color=red><b>!</font> <font color=#A300CC>Е</font><font color=#8100B1>с</font><font color=#630092>л</font><font color=#4B0066>и</font></b> Вы обнаружили на странице ошибку, выделите мышью слово или фразу и нажмите сочетание клавиш Ctrl+Enter (<a href='/error_sending/help.htm' target='_blank'>подробнее</a>).</font>\r\n");
document.write("<span id='unikum_id_error_span' ></span>\r\n");
// для фиксации диалога внизу не зависимо от прокрутки
// !!!!! document.body.style.background = 'url(/;-)/n.gif) no-repeat';
document.body.style.backgroundAttachment = 'fixed';
//alert(sender_cook);
document.onkeypress= function selectedText(e)
{
with (this)
{
var pressed=0;
var we = null;
if (window.event) we = window.event;
else if (parent && parent.event) we = parent.event;
if (we) {
// IE & Opera
pressed = we.keyCode==10 || // IE
(we.keyCode == 13 && we.ctrlKey); // Opera
} else if (e) {
// NN
pressed =
(e.which==10 && e.modifiers==2) || // NN4
(e.keyCode==0 && e.charCode==106 && e.ctrlKey) ||
(e.keyCode==13 && e.ctrlKey) // Mozilla
}
if(!pressed)
return;
}
/////////////////////
var context = 0;
var text=0;
var selection=0;
if(parent.getSelection)// типа оперы
{
text=parent.getSelection();
}
else
if (parent.document.getSelection)
{
text = parent.document.getSelection();
}
else //
{
selection = parent.document.selection;
range = document.selection.createRange();
range.expand("sentence");// показывать все предложение
context=range.text;
//alert(range.text);return;
}
//alert(text);
if(context==0)// выделение окружающего в мозиле
{
if (text.getRangeAt)
{
var contlen=60;
//var maxlen="256";
var range = text.getRangeAt(0);
textRange = range.toString();
var newRange = window.document.createRange();
newRange.setStartBefore(range.startContainer.ownerDocument.body);
newRange.setEnd(range.startContainer, range.startOffset);
pre = newRange.toString();
newRange = range.cloneRange();
newRange.setStart(range.endContainer, range.endOffset);
newRange.setEndAfter(range.endContainer.ownerDocument.body);
suf = newRange.toString();
//alert(suf);return;
var p;
var s = (p=textRange.match(/^(\s*)/)) && p[0].length;
var e = (p=textRange.match(/(\s*)$/)) && p[0].length;
pre = pre + textRange.substring(0, s);
suf = textRange.substring(textRange.length - e, textRange.length) + suf;
textRange = textRange.substring(s, textRange.length - e);
pre = stripSlashn(pre.substring(pre.length-contlen, pre.length).replace(/^\S{1,10}\s+/, ""));
suf = stripSlashn(suf.substring(0, contlen).replace(/\s+\S{1,10}$/,""));
context= pre+" ["+text+"] "+suf;
//alert(context);return;
}
}
if(selection)
{
var oSelTxt = document.selection.createRange();
text=oSelTxt.text;
}
//if(!text)
//{
//alert('Ваш просмотрщик не поддерживает возможноть получения выделенного текста...Используйте шаблон для вставки текста вручную, введя цитату между [quote] и [/quote]');
//return;
//}
text=""+text;// - только для оперы и фокса: они иначе не воспринимают text как объект :))))
//alert(text.length);
if(text.length>200)
{alert("Выделен слишком большой фрагмент, больше 200 символов.");return;}
if(text.length==0)
{alert("Пожалуйста, выделите фрагмент текста!.. :)\r\n\r\nЕсли он итак был выделен, значит Ваш просмотрщик не позволил его считать.\r\nВ этом случае, пожалуяста, скопируйте фрагмент с ошибкой в окошко ввода.");return;}
//if(confirm("Выделенный текст:\n_____________________________________\n"+text+"\n_____________________________________\n\nПослать сообщение об ошибке?"))
//send_error(text); url_encode(context)
theExp = new RegExp('"', "g");
text=text.replace(theExp,""");
//text=text.replace(/"/g,"""); - тоже можно
Файл send_error.js положите в ту же папку что основная страница, файл help.htm в папку error_sending от корня сайта. _________________ Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)
sender_ip - IP-адрес отправителя
Так и не понял, что значит переменная "publisher_owner_id"
Создал в корне директорию "error_sending", в неё затолкал файлы "send_error.js" с неизменным содержанием и "send_error.php" со следующим содержанием:
Код:
mail('Моё_мыло@mail.ru', 'сообщение об ошибке', convert_cyr_string($_POST['publisher_owner_id'].':'.$_POST['target']));
echo 'Ваше сообщение отправлено администратору!';
Модуль состоит из двух файлов: mistakes2.js и mistakes.php
Чтобы его подключить, нужно поместить эти файлы в директорию своего сайта, например в папку «mistakes» и на всех страницах сайта между тегами «head» вставить строку:
Недостатки:
- в IE7 и IE8 с настройками по умолчанию всплывающее окошко блокируется
- нет ограничения на количество выделяемого текста (число символов)
- поля "Ошибка" и "Адрес страницы" доступны редактированию пользователю (спорный недостаток, дело вкуса)
Кто хочет проявить мастерство и доработать скрипт?
P.S. Эти функции реализованы в первом скрипте (см. выше)
Недостатки:
- в IE7 и IE8 с настройками по умолчанию всплывающее окошко блокируется
Эээ, по моему с такими настройками будет заблокировано любое всплывающее окно, т.е. это неисправимо скорее всего
corsar8888 писал(а):
- нет ограничения на количество выделяемого текста (число символов)
А зачем оно надо? Ну отправит кто-то вам текст всей страницы и что плохого, может в этом есть какой-то смысл (например, ложные сведения на всей странице)?
Если действительно надо, смотрите аттрибут maxlength у элементов формы
corsar8888 писал(а):
поля "Ошибка" и "Адрес страницы" доступны редактированию пользователю (спорный недостаток, дело вкуса)
Добавьте тегам <input ... > и <textarea...> аттрибут readonly, пример: <input type="text" readonly> и тогда пользователь не сможет их редактировать. _________________ Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)
Если действительно надо, смотрите аттрибут maxlength у элементов формы
На сколько я знаю, textarea не поддерживает аттрибут maxlength, в отличие от input. Есть какой-то другой способ. Пробовал ограничить количество символов на стороне сервера, не получилось, плюнул. Пусть будет так, как есть.
Веденин писал(а):
Добавьте тегам <input ... > и <textarea...> аттрибут readonly, пример: <input type="text" readonly> и тогда пользователь не сможет их редактировать.