распознать несколько строк на info.selectionText из контекстного меню - PullRequest
0 голосов
/ 03 апреля 2012

Мое расширение добавляет контекстное меню всякий раз, когда пользователь выбирает какой-либо текст на странице.

Затем, используя info.selectionText, я использую выделенный текст в функции, выполняемой всякий раз, когда пользователь выбирает один из элементов измое контекстное меню.(с http://code.google.com/chrome/extensions/contextMenus.html)

Пока все работает нормально.

Теперь я получил этот крутой запрос от одного из пользователей внутреннего номера, чтобы выполнить эту функцию один раз в строке выбранного текстаПользователь может выбрать, например, 3 строки текста, и моя функция будет вызываться 3 раза, по одному на строку, с соответствующей строкой текста.

Я не смог разделить информациюДо сих пор .selectionText, чтобы распознать каждую строку ... info.selectionText возвращает одну строку текста, и не может найти способ разбить ее.

Кто-нибудь знает, есть ли способ сделать это?Есть ли какой-нибудь «скрытый» символ, который можно использовать для разделения?

Заранее спасибо ... на случай, если вам интересно, вот ссылка на расширение

https://chrome.google.com/webstore/detail/aagminaekdpcfimcbhknlgjmpnnnmooo

1 Ответ

1 голос
/ 07 апреля 2012

Хорошо, поскольку OnTlickData selectionText всегда будет только текстом, вы никогда не сможете сделать это, используя этот подход.

Тогда я бы вставил скрипт содержания на каждую страницу и использовал что-то похожее на приведенный ниже пример (вдохновленный чтением этого SO-сообщения - получить html выбранного текста в div )

Вы все равно можете использовать контекстное меню OnClickData hook, как и сейчас, но когда вы получаете его вместо чтения selectionText, вы используете уведомление о событии, чтобы затем запустить ваш контекстный скрипт для чтения выбора, используя x.Selector.getSelected (). Это должно дать вам то, что вы хотите. Текст остается выделенным в вашем расширении после использования контекстного меню, поэтому у вас не должно возникнуть проблем при чтении выделенного текста.

if (!window.x) {
    x = {};
}

// /7081174/poluchit-vydelennyi-tekst-html-v-div
x.Selector = {};
x.Selector.getSelected = function() {
    var html = "";
    if (typeof window.getSelection != "undefined") {
        var sel = window.getSelection();
        if (sel.rangeCount) {
            var container = document.createElement("div");
            for (var i = 0, len = sel.rangeCount; i < len; ++i) {
                container.appendChild(sel.getRangeAt(i).cloneContents());
            }
            html = container.innerHTML;
        }
    } else if (typeof document.selection != "undefined") {
        if (document.selection.type == "Text") {
            html = document.selection.createRange().htmlText;
        }
    }
    return html;
}

$(document).ready(function() {
    $(document).bind("mouseup", function() {
        var mytext = x.Selector.getSelected();
        alert(mytext);
        console.log(mytext);
    });
});​

http://jsfiddle.net/richhollis/vfBGJ/4/

См. Также: Расширение Chrome: как захватить выделенный текст и отправить в веб-службу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...