Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.08.2011, 12:52
Интересующийся
Отправить личное сообщение для artnik Посмотреть профиль Найти все сообщения от artnik
 
Регистрация: 19.01.2011
Сообщений: 28

Проблема с подсчетом строк в IE
Мне нужно подсчитать количество строк в коде, обернутом в <pre><code></code></pre> теги, для применения визуального оформления кода.
Подсчет сделал через split('\n');. IE отображает строки нормально, как и другие браузеры, но количество строк выдает (через alert) в 2 с лишним раза меньше. Можно ли как-то его научить этого осла нормально считать строки в теге pre?

Последний раз редактировалось artnik, 26.08.2011 в 13:00.
Ответить с цитированием
  #2 (permalink)  
Старый 26.08.2011, 13:21
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Код в студию. Интересует, как ты получаешь содержимое, которое затем разбиваешь через split.
Ответить с цитированием
  #3 (permalink)  
Старый 26.08.2011, 14:20
Интересующийся
Отправить личное сообщение для artnik Посмотреть профиль Найти все сообщения от artnik
 
Регистрация: 19.01.2011
Сообщений: 28

Вобщем кода много, но идея простая. Сначала вытаскивается html, потом я его разчленяю на строки через сплит, и циклом оборачиваю каждую строку в <li></li>. После чего старый pre удаляеться а на его место ставиться уже новый.
PS: Это jQuery

$('pre.code').each(function(index) {
	var html = $(this).find('code').html(),
		htmlArr = html.split('\n'),
		totalLines = htmlArr.length;

	$(this).after(
       '<div class="precode">'+
         '<pre>'+
           '<ol></ol>'+
         '</pre>'+
       '</div>'
	);
	
	var wrap = $(this).next('.precode');
	$(this).remove();
	
	var result = '',i;
	for(i = 0; i < totalLines; i++) {
		var curHTML = htmlArr[i],
			id = 'code'+(index+1)+'_l'+(i+1);
		curHTML = curHTML == false ? ' empty">' : '">'+curHTML;
		result += '<li id="'+id+'" rel="#'+id+'"><span class="l'+curHTML+'</span></li>';
	}
	wrap.find('ol').html(result);
});


На всяки случай цепляю и html код pre тега (внутри pre - код для теста)

<pre class="code"><code>function oversky_dynamic_vars($vars) {
    $vars[] = 'dynamic';
    return $vars;
}
add_filter('query_vars','oversky_dynamic_vars');

function oversky_dynamic_check() {
	$curVar = get_query_var('dynamic');
	if($curVar == 'css') {
		header("Content-Type: text/css");
		require (FUNCTIONS.'/dinamic-css.php');
		die;
	}
	if($curVar == 'js') {
		header('Content-type: text/javascript');
		require (FUNCTIONS.'/dinamic-js.php');
		die;
	}
}
add_action('template_redirect', 'oversky_dynamic_check');</code></pre>

Последний раз редактировалось artnik, 26.08.2011 в 14:49.
Ответить с цитированием
  #4 (permalink)  
Старый 26.08.2011, 15:00
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Проблема в том, что IE не учитывает всех переносов строк \n в блоках, считает их не важными, как и просто пробелы. Поэтому часть их он просто напросто вырезает. Исключение составляют элементы pre и textarea, в которых он все сохраняет в точности. Таким образом, в твоем случае тебе надо убрать элемент code, чтобы все работало.
var html = $(this).html(), ...
Ответить с цитированием
  #5 (permalink)  
Старый 26.08.2011, 15:10
Интересующийся
Отправить личное сообщение для artnik Посмотреть профиль Найти все сообщения от artnik
 
Регистрация: 19.01.2011
Сообщений: 28

Аха, точняк. Все намного легче чем я думал. Ато я тут уже на php начал мутить подсчет строк. Спасибо ваый!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое удаление строк таблицы Tankist Events/DOM/Window 16 03.07.2013 16:42
Проблема с Popup окном vovuslik jQuery 5 12.06.2010 16:12
Проблема с CSS COKOJIOB (X)HTML/CSS 5 04.08.2009 14:19
Проблема, в менюшке Большой джо Элементы интерфейса 0 12.07.2009 17:12
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47