Визуальный редактор, нужна консультация

12
Дмитрий
На сайте с 23.08.2006
Offline
199
1216

Хочется кроссбраузерности, встала проблема с FF. Нужно получить выделенную область, делаю так:

function display() {

if (window.getSelection) {
var str = window.getSelection();
alert("Я FF");
} else if ( document . selection && document . selection .createRange) {
var range = document.selection.createRange();
var str = range.text;
alert("Я опера или IE");
} else {
alert = "Я не умею";
}
alert(str);
}

В опере и ие выделенная область помещается в str, в FF - нет.

Разрабатываю и автоматизирую на php http://jonnyb.ru/
deepslam
На сайте с 09.05.2006
Offline
204
#1

Попробуйте так:


var text=document.getElementById('editor');
document.getElementById('editor').focus();
var str=text.value.substring(text.selectionStart,text.selectionEnd);
alert(str);
Удаление вирусов на сайте (http://www.virusonsite.ru) | Scripto CMS - бесплатная система управления сайтом (http://www.scripto-cms.ru) |Профессиональный скрипт каталога ссылок , статей, фирм и объявлений! (http://www.scripto.ru) | Уникальный скрипт для публикации контента (http://publisher.scripto.ru)
A
На сайте с 25.10.2005
Offline
58
#2

Вот тут есть много материала по написанию WYSIWYG - Пишем правильный online WYSIWYG-редактор

Дмитрий
На сайте с 23.08.2006
Offline
199
#3

deepslam, Antimal спасибо, это то что нужно!

Подскажите как удалить элемент со страницы, зная его id'шник (нужно только для IE). Я пробывал

document.getElementById('testelem1').removeChild(node);

document.getElementById('testelem1').removeNode(true);

Вроде элементы исчезали, но создаваемый например div с id="testelem1" не показывался на странице.

Может удалить с использованием регулярных выражений? Кто может подсказать конструкцию?

<textarea id="тут я знаю что" rows="10" cols="50" тут ещё может быть всякая чушь>много всякого текста</textarea>

A
На сайте с 12.05.2004
Offline
176
#4

А зачем его писать? Возьмите готовый: http://www.htmlarea.com

T
На сайте с 16.02.2006
Offline
98
#5
JonnyB:
deepslam, Antimal спасибо, это то что нужно!

Подскажите как удалить элемент со страницы, зная его id'шник (нужно только для IE). Я пробывал
document.getElementById('testelem1').removeChild(node);
document.getElementById('testelem1').removeNode(true);
Вроде элементы исчезали, но создаваемый например div с id="testelem1" не показывался на странице.
Может удалить с использованием регулярных выражений? Кто может подсказать конструкцию?
<textarea id="тут я знаю что" rows="10" cols="50" тут ещё может быть всякая чушь>много всякого текста</textarea>

Почитай серию статей IBM по этому поводу. У меня прям все на свои места встало после прочтения. Все доходчиво и понятно. Лучше с 1 части читай... А так то, что тебе нужно - в части 3-4 скорее всего. http://www-128.ibm.com/developerworks/ru/library/wa-ajaxintro1/

icq - 9225229 Web-payment.ru/monitoring (http://web-payment.ru/monitoring) - лучший мониторинг курсов обменных пунктов
Дмитрий
На сайте с 23.08.2006
Offline
199
#6
А зачем его писать? Возьмите готовый: http://www.htmlarea.com

Нельзя брать готовый по многим причинам..

A
На сайте с 25.10.2005
Offline
58
#7

Когда то давно писал собственный визуальник, но результат требовался быстро, поэтому пришлось остановиться на готовом решении, а именно tinymce - пример работы. Действительно сильный и гибкий визуальник. Отличная кроссбраузерность и масштабируемость.

MSIE 7

MSIE 6

MSIE 5.5 SP2

MSIE 5.0

Mozilla SeaMonkey 1.0.5

Firefox 1.5.x

Firefox 2.0

Safari

Opera 9

Дмитрий
На сайте с 23.08.2006
Offline
199
#8

Toshka, спасибо, статья действительно полезная. Попытался вытащить оттуда удаление элемента, для начала хочу попробывать удалить все textarea, в FireFox Error Console такая ошибка:

Error: uncaught exception: [Exception... "Component returned failure code: 0x80004003 (NS_ERROR_INVALID_POINTER) [nsIDOMHTMLBodyElement.removeChild]" nsresult: "0x80004003 (NS_ERROR_INVALID_POINTER)" location: "JS frame :: http://123/ve/ve.js :: anonymous :: line 8" data: no]

Вот этот код использовал:

  bodyElement = document.documentElement.getElementsByTagName("head")[0].nextSibling;

var taElements = bodyElement.getElementsByTagName("textarea");
for (i=0; i<taElements.length; i++) {
var taElements =taElements.item;
bodyElement.removeChild(taElements); // line8
}
Дмитрий
На сайте с 23.08.2006
Offline
199
#9

Antimal, тини запрещён в коммерческом использовании, так что в cms не вставишь :(

Дмитрий
На сайте с 23.08.2006
Offline
199
#10

Переписал в таком виде:


bodyElement = document.documentElement.getElementsByTagName('body')[0];
taElements = document.body.getElementsByTagName('textarea');
for(i=0; i<taElements.length; i++) {
var taElement =taElements.item;
bodyElement.removeChild(taElement);
}

Та же ошибка.

content = bodyElement.innerHTML;

alert(content);

Выводит содержание страницы..

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий