Как определить, есть ли в представлении браузера «новая строка» два символа? - PullRequest
1 голос
/ 19 января 2012

Я понимаю, что Opera считает \n\r новой строкой внутри текстовых полей.И некоторые версии IE.Если я нажму Enter внутри текстовой области, я получу новые строки с \n\r

В других браузерах новая строка просто \n.

Как я могу обнаружить это в моем скрипте?

Я мог бы использовать window.opera, чтобы узнать, является ли браузер Opera, но люди говорят, что я должен попытаться обнаружить функции браузера вместо реального браузера.

Ответы [ 3 ]

4 голосов
/ 19 января 2012

Следующее, кажется, работает (т.е. возвращает желаемое true) в последних версиях Opera и IE 7+.Тем не менее, это не проверялось в старых версиях, и я подозреваю, что это не нужно.См. Мои комментарии к вопросу.

Обновление : улучшено благодаря комментарию @Umbrella ниже.

var textarea = document.createElement("textarea");
textarea.value = "\n";
var twoCharLineBreaks = (textarea.value == "\r\n");
alert(twoCharLineBreaks);
2 голосов
/ 19 января 2012

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

<textarea id="yourEditor">foo
bar
bing
baz</textarea>

и затем протестируйте его

<script type="text/javascript">
function newlineSize() {
    var val = document.getElementById('yourEditor').value;
    var len = 0;
    if (1 < val.split("\r").length) {
        len++;
    }
    if (1 < val.split("\n").length) {
        len++;
    }
    return len;
}
</script>

<input type="button" onclick="alert(newlineSize());" value="test">

Это вернет / предупредит ширину новой строки в вашей текстовой области.

2 голосов
/ 19 января 2012

Я не знаю, как должен проверить для этого.Я надеюсь, что кто-то делает, но в случае, если никто не делает, у меня есть идея о том, как вы можете проверить для этого.Добавьте (жесткий код) текстовое поле с известным значением, содержащим символ новой строки, затем проверьте его длину.

<textarea style="visibility:hidden" id="newlineTest">foo
bar</textarea>

Убедитесь, что во второй строке (содержащей 'bar') нет отступов / начальных пробелов / табуляции, изатем протестируйте его

<script type="text/javascript">
function newlineSize() {
    var len = document.getElementById('newlineTest').value.length;
    alert(len);
    if (8 == len) {
        return 2;
    } else if (7 ==len) {
        return 1;
    } else {
        return null; //unknown condition
    }
}
</script>

<input type="button" onclick="alert(newlineSize());" value="test">

Естественно, вы хотите отключить оповещения и сохранить их в переменной.Протестировано в Chrome, Firefox, Safari (все Mac), вернул 1. IE8 (XP) вернул 2.

...