1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/donggongai-touchnote

Клонировать/Скачать
README.md 17 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 21:34 90d1eb4

touchNote

1. Введение

touchNote — это плагин на основе jQuery, который позволяет добавлять комментарии и выделять заметки в HTML статьях. Он помогает разработчикам легко реализовать функцию комментирования веб-страниц. Поддерживает выделение текста на веб-страницах, добавление комментариев и другие функции.

2. Идея

Большое спасибо за две статьи, которые предоставили идею:

「划线高亮」和「插入笔记」—— 不止是前端知识点

✨ 如何用 JS 实现“划词高亮”的在线笔记功能?✨🖍️

3. Использование

Вы можете обратиться к демонстрационной странице кода для проверки страницы, просто запустите html.

4. Описание

  • Этот плагин ещё не совершенен, и мы продолжим его обновлять в будущем.
  • Если у вас есть какие-либо вопросы или проблемы, пожалуйста, сообщите нам через issues.

Параметры

Ключ Параметр Значение
root По умолчанию: document.body Начальный элемент для вычисления смещения
username По умолчанию: 兔先生 Имя пользователя, обычно динамические данные, полученные из session или cookie
userimage По умолчанию: Изображение профиля пользователя
parSelectors По умолчанию: Селектор родительского узла, только узлы, соответствующие селектору, используются в качестве родительских узлов для расчёта относительного смещения текста. Рекомендуется использовать фиксированные и неизменные селекторы узлов, чтобы уменьшить влияние изменений содержимого на узлы. Например, можно использовать селекторы для разделов или контейнеров содержимого.
noteContainerSelector По умолчанию:.notesshow_container_div Селектор контейнера заметок jQuery
noteCountSelector По умолчанию:.notesshow_container_div .notesCount Селектор количества заметок
noteItemClsName По умолчанию: notesdiv Класс стиля элемента заметки
noteSelectedClsName По умолчанию: noteselected Класс выбранного стиля элемента заметки
hltagName По умолчанию: span Тег, используемый для обертывания выделенного текста
hltmpClsName По умолчанию: tmp_touch_notes Класс стиля, используемый для обозначения выбранной области
hlClsName По умолчанию: touch_notes Класс стиля выделения
hldatas По умолчанию:[] Данные по умолчанию, отображаемые после выделения, формат см. ниже
highlightNoteAfter Функция, по умолчанию открывает всплывающее окно и передаёт текущий выбранный диапазон параметров Метод обработки после выделения элемента, параметры (ele, data, tipsClass, tipsContentClass, options)
mouseup Функция(event, root, ele, options) Метод, вызываемый после выбора элемента с помощью мыши, параметры(event, root, ele, options)
mouseover Функция(event, root, ele, options)
mouseOverBefore Функция(event, root, ele, options) Функция начала обработки события mouseover, возвращает логическое значение, если оно равно false, обработка не продолжается. Параметры (event, root, ele, options). Если переопределить mouseover, эта функция не будет вызвана.
mouseOverInHigh Функция(targetEle, event, root, ele, options) Функция обработки события mouseover в выделенном узле. (targetEle, event, root, ele, options), если переопределить mouseover, то эта функция не будет вызвана.
mouseOverAfter Функция(event, root, ele, options) Функция завершения обработки события mouseover. Параметры(event, root, ele, options), если переопределить mouseover, то эта функция не будет вызвана.
highlightNoteMouseover [ ] Массив событий наведения мыши на выделенный узел, первая функция — событие ввода мыши, вторая функция — событие вывода мыши. Эти функции соответственно добавляют и удаляют класс selected.
openDialog Функция, которую необходимо реализовать самостоятельно Открыть диалоговое окно
tooltopsHtml По умолчанию: Определены методы рисования линий, копирования и добавления заметок HTML всплывающего окна после выбора
tooltopsClickLine Функция, по умолчанию: Пустая функция Метод рисования линии во всплывающем окне после выбора
tooltopsClickNote Функция Метод добавления заметок во всплывающем окне после выбора
tooltopsClickCopy Функция, по умолчанию: пустая функция Метод копирования во всплывающем окне после выбора
tooltopsClickOthers Функция, по умолчанию: пустая функция Методы во всплывающем окне после выбора, которые можно расширить самостоятельно
addNoteHtml Функция(data, index, datas, noteContainerEle, root, ele, options) Добавить содержимое области заметок, при необходимости можно переопределить. Индекс класса — number, имя пользователя класса — username, текст класса — text, примечание класса — remarks, класс времени создания — createtime. Параметры (data, index, noteContainerEle, root, options, datas), data — данные, index — индекс, datas — все данные, noteContainerEle — объект jQuery контейнера, root — корневой элемент, ele — обрабатываемый объект, options — конфигурация
getAddNoteEle Функция(data, index, datas, noteContainerEle, root, ele, options) Добавить содержимое области заметок, при необходимости можно переопределить. Параметры (data, index, noteContainerEle, root, options, datas), data — данные, index — индекс, datas — все данные, noteContainerEle — объект jQuery контейнера, root — корневой элемент, ele — обрабатываемый объект, options — конфигурация
fixNoteTopFn Функция(noteContainerEle, root, ele, options) Способ вычисления верхнего смещения области заметок
noteOperateHtml По умолчанию:
Изменить
Удалить
HTML операций области заметок справа, обязательно наличие touch-note-popmenus, элементы внутри должны иметь класс note-tool-item, изменить стиль на touchnote-update, удалить стиль на touchnote-delete
addNoteEleFn Функция(noteEle, noteContainerEle, root, ele, options) Событие добавления элемента области заметок. Параметры (noteEle, noteContainerEle, root, options, datas), noteEle — элемент jQuery области заметок, noteContainerEle — контейнер jQuery объекта, root — корневой элемент, options — конфигурация
noteUpdateFn Функция(noteEle, itemEle, root, options) Обновление заметки. Параметры (noteEle, itemEle, root, options), noteEle — объект заметки, itemEle — элемент операции, root — корневой элемент, options — конфигурация
noteDeleteFn Функция(noteEle, itemEle, root, options) Удаление заметки. Параметры (noteEle, itemEle, root, options), noteEle — объект заметки, itemEle — элемент операции, root — корневой элемент, options — конфигурация
noteClickOtherFn Функция(noteEle, itemEle, root, options) Другие методы заметки. Параметры (noteEle, itemEle, root, options), noteEle — объект заметки, itemEle — элемент операции, root — корневой элемент, options — конфигурация
addNoteEle Функция(data, index, datas, noteContainerEle, root, ele, options) Добавление содержимого области заметок. Параметры (data, index, noteContainerEle, root, options, datas), data — данные, index — индекс, datas — все данные, noteContainerEle — объект jQuery контейнера, root — корневой элемент, options — конфигурация
updateNotesCount Функция(count, datas, root, options) Обновить общее количество заметок. Параметры (count, datas, root, options), count — общее количество, datas — выделенные данные, root — корневой элемент, options — конфигурация
refreshNotesCount Функция(count, datas, root, options) Обновите общее количество областей заметок. Параметры (count, datas, root,
options), count — общее количество, datas — выделенные данные, root — корневой элемент, options — конфигурация ### Плагин-метод
Метод Описание параметров Значение
$(dom).touchNote() См. описание параметров выше Метод инициализации плагина
$(dom).getSelection() Метод получения выделенного содержимого объекта jQuery с комментариями

Формат данных

hldatas представлен в формате массива.

Пример: nid — это первичный ключ данных, keyid — это ключ touchNote, который является его первичным ключом, keycode сохраняет информацию о местоположении, при отправке данных будет происходить упаковка, можно обратить внимание на просмотр консоли, remarks — добавленные примечания, userid — идентификатор пользователя (обычно предоставляется проектом), username — имя пользователя (обычно предоставляется проектом), createtime — время создания.

Выделенный текст можно получить в keycode.text или использовать touchNote.getSelectionText() для получения текущего выделенного содержимого.

var notesdata = [
    {
        'nid': '1',
        'keyid': "tn-1628153524469",
        'keycode': {
            'startMeta': {
                'parentTagName': 'DIV',
                'parentIndex': -2,
                'textOffset': 41
            },
            'endMeta': {
                'parentTagName': 'DIV',
                'parentIndex': -2,
                'textOffset': 56
            }
        },
        'remarks': 'Изображение',
        'userid': 2,
        'username': 'Заяц',
        'createtime': '2021-07-05 09:12:17.0'
    },
    {
        'nid': '2',
        'keyid': "h1625464240253",
        'keycode': {
            'startMeta': {
                'parentTagName': 'DIV',
                'parentIndex': -2,
                'textOffset': 64
            },
            'endMeta': {
                'parentTagName': 'DIV',
                'parentIndex': -2,
                'textOffset': 68
            }
        },
        'remarks': 'Следующее слово <span>с тегом',
        'userid': 3,
        'username': 'Супер',
        'createtime': '2021-07-05 13:51:01.0'
    }
];

Использование метода

// Инициализация
var annotate = $("#container").touchNote({});
// Получение выделенной области
var data = annotate.getSelection();
// Результат объекта selection, можно получить объект range (обратите внимание, что это не оригинальный объект range JavaScript), выделенный текст и выбранный узел и т. д.
{
    selection: объект selection JavaScript,
    range = {
        startContainer: начальный узел,
        startOffset: смещение начального узла,
        endContainer: конечный узел,
        endOffset: смещение конечного узла,
        domRect: информация о местоположении
    },
    selectedNodes: выбранные узлы,
    text: выделенный текст
}

// Также можно напрямую использовать класс инструментов для получения выделенного текста
touchNote.getSelectionText();
// Удалить выделение с указанным идентификатором, если выделение с соответствующим идентификатором не существует, вернуть false, rootEle — вызываемый объект jQuery, callback — метод обратного вызова
touchNote.removeHighlight(rootEle, id, callback);
// Удалить все выделения, rootEle — вызываемый объект jQuery, callback — метод обратного вызова
touchNote.removeAllHighlight(rootEle, callback);

Отправка данных

Обычно данные, используемые в процессе, необходимо сохранить в базе данных. В этом примере сохранение не выполняется, но если оно требуется, вы можете переопределить пустой метод submitData.

$("#container").touchNote({
    // Успешная отправка возвращает true, неудачная отправка возвращает false
    submitData: function(remarks, keytype, params, ele, dialogEle, options) {
        // Здесь вы можете реализовать свой собственный ajax
        console.log("Данные отправлены, например, сохранены в базе данных и т.д., в официальной среде рекомендуется переопределить", remarks, keytype, params);
        return true;
    }
});

Если вам нужно переписать всплывающее окно, которое не соответствует требованиям, вы можете обратиться к примеру codereview.html и переписать всплывающие окна и методы отправки.

Эффект изображения


Простой пример


Выделение: fKAanI.png Комментарии: fKADN8.png

Проверка кода


Эффект изображения: Эффект изображения

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/donggongai-touchnote.git
git@api.gitlife.ru:oschina-mirror/donggongai-touchnote.git
oschina-mirror
donggongai-touchnote
donggongai-touchnote
master