Копирование текста с новой строкой вне работает в IE - PullRequest
0 голосов
/ 15 мая 2018

Моя проблема заключается в следующем:

У меня есть простой ввод:

<input type="text"/>

И когда я пытаюсь вставить текст, содержащий новую строку, всетекст после новой строки не появляется.

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

Однако другие браузеры преобразуют новую строку в символ пробела и добавляют текст после новой строки, чтобы в итоге вы получили весь текст в одну строку.IE не делает этого.

Я нашел следующее решение для перехвата вставки события , и я подумал, может быть, я смогу использовать его для преобразования строки в однострочный, но это не такработать в Firefox.Я могу попробовать обнаружение браузера, но я боюсь, что он может потерпеть неудачу и во многих других сценариях.

Есть ли что-то еще, что я могу сделать, чтобы IE вел себя как другие браузеры, и каковы мои лучшие варианты?

1 Ответ

0 голосов
/ 15 мая 2018

Я нашел ответ, который мог бы решить вашу проблему: JavaScript получает данные буфера обмена при вставке события (кросс-браузер)

Должно работать в IE6 +, FF 22+, Chrome & Safari.

HTML

<input id='editableDiv' contenteditable='true' type="text"/>

JavaScript

function handlePaste (e) {
    var clipboardData, pastedData;

    // Stop data actually being pasted into input field
    e.stopPropagation();
    e.preventDefault();

    // Get pasted data via clipboard API
    clipboardData = e.clipboardData || window.clipboardData;
    pastedData = clipboardData.getData('Text');

    // Remove new line characters
    alert(pastedData);
    var res = pastedData.replace(/\r?\n|\r/g, );
}

document.getElementById('editableDiv').addEventListener('paste', handlePaste);

Надеюсь, это поможет, приятель.

...