Как считать новые строки в Internet Explorer? - PullRequest
3 голосов
/ 11 мая 2010

Привет, все. Я делаю свою собственную подсветку синтаксиса для Javascript и CSS, и у меня возникла проблема с Internet Explorer (большой сюрприз). Я собираю все содержимое тега code.block (пример ниже), используя innerHTML и .split("\n"), которые в результате получают каждую строку отдельно. Это прекрасно работает, кроме как в IE.

Я пытался использовать innerText и .split("\r\n") также безуспешно. Кто-нибудь может порекомендовать решение? Если это имеет значение, мои теги code.block имеют стиль white-space:pre-wrap.

<code class="block css">div#randomBarsDemo {
    width:175px;
    height:200px;
}

div#randomBarsDemo div {
    background-color:#111;
    width:100%;
}</code>

Ответы [ 2 ]

1 голос
/ 11 мая 2010

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

http://blog.stevenlevithan.com/archives/cross-browser-split

0 голосов
/ 12 мая 2010

Лучшее, что я нашел на данный момент (по крайней мере, в IE8 для Windows), - это получить innerText из целевого элемента, заменить \r на <br/> и вставить его обратно в innerHTML

var el = document.getElementById('target');
el.innerHTML = el.innerText.replace(/\r/,"<br/>");

Тогда, если вы хотите получить строку построчно в будущем, вы можете .split() на <BR>. имеет для <BR>, а не <br/> благодаря автоматическому разбору HTML в Internet Explorer.

Таким образом, чтобы напрямую ответить на вопрос, для подсчета строк вам нужно получить innerText и искать \r с, а не \n. Пожалуйста, дайте мне знать, если это решит или не решит вашу проблему, поэтому я знаю, помогает ли это людям или вводит их в заблуждение.

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