Чтение текста буфера обмена для аддона Firefox, проблемы с символами новой строки, HTML и MSWord - PullRequest
0 голосов
/ 14 сентября 2018

Я работаю над заменой надстройки тегов bbCodeXtra, которая не будет перемещаться в Webextensions, и у меня возникают проблемы с чтением содержимого буфера обмена.

В процессе я изучаю javascript и многократно использую много кода в том, что, вероятно, глупо и, безусловно, глубоко уродливо.

Обратите внимание, что мне нужно только прочитать текст данных, вы можете увидеть основы того, как этот аддон должен функционировать, посмотрев на его предшественник XUL, bbCodeXtra .

Код для функции, которая читает буфер обмена:

function readClipboard() {
    field = document.activeElement;
    var area = document.getElementById("fcb_txt_area");
    if (area) {
        // console.log("Found existing area");
        //area.setAttribute("style", "visibility:visible;");
        area.setAttribute("style", "display:inline;");
    } else {
        // console.log("Creating new area");
        area = document.createElement("textarea");
        area.setAttribute("id", "fcb_txt_area");
        if (field) {
            field.parentNode.append(area);
        } else {
            document.body.appendChild(area);
        }
        area.contentEditable = true;
    }

    area.textContent = '';
    area.select();
    //console.log('Pre-paste: ' + area.value);
    //console.log(document.execCommand("paste"));
    document.execCommand("paste");
    var value = area.value;
    //console.log('Post-paste: ' + area.value);
    area.setAttribute("style", "display:none");
    console.log("Clipboard Contents: ",value);
    return value;
}

Работает нормально, но только на отдельных строках текста или html:

В единственной строке простого текста я получаю то, что хочу, на консоли:

Clipboard Contents: "https://discourse.mozilla.org/c"

В одной строке HTML я получаю:

Unknown property ‘zoom’. Declaration dropped.

Что является (я думаю) свойством веб-страницы, страницы публикации доски объявлений phpBB.

На многострочном тексте я получаю:

Clipboard Contents: line1line2line3

но я скопировал:

line1
line2
line3

С помощью MS word я копирую и получаю: (просто копирую одно слово, «попробуй»)

Clipboard Contents:    content_script.js:70:5
Unknown property ‘mso-ascii-theme-font’.  Declaration dropped.  posting.php
Unknown property ‘mso-fareast-font-family’.  Declaration dropped.  posting.php
Unknown property ‘mso-fareast-theme-font’.  Declaration dropped.  posting.php
Unknown property ‘mso-hansi-theme-font’.  Declaration dropped.
………

Это довольно очевидно - функция, подавляющая раздутые стили Word / html по умолчанию.

Мои вопросы:

Как читать содержимое буфера обмена и сохранять новые строки, и как мне очистить / расшифровать такие вещи, как html и word?

...