Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Конфликт с jquery (https://javascript.ru/forum/dom-window/21222-konflikt-s-jquery.html)

stvord 01.09.2011 18:56

Конфликт с jquery
 
Вложений: 1
Используется некий javascript для создания адаптивных блоков.
Все хорошо, но как только подключается jquery страница начинает "подергиваться" на пол секунды потом это пропадает.
Не подскажите в чем может быть конфликт?
Причем в firefox этого "дерганья" не наблюдается.
Код:
<script type="text/javascript" charset="utf-8"> 
window.onload = init; 
window.onresize = init;
// Функция показывающая ширину экрана, прикольно же.
function ShowUsScreenWidth(){
	var fmt = document.documentElement.clientWidth;
	fmt = fmt - (fmt % 10);
	document.getElementById('count').innerHTML=fmt+'px';
}
 
var g_count=5; // дефолтное кол-во колонок, генерируемое на сервере
 
 
function init(){
	g_result=document.getElementById("mytable");
	if(g_result){
		g_tds=g_result.getElementsByTagName("td");
		window.onresize=resize;
		resize();
	}
}
// Считаем кол-во колонок, которое помещается в экран
function CountColumns(){
	var c=Math.floor(document.documentElement.offsetWidth/(230));
	return c>0?c:1;
	}
	
function resize(){
	ShowUsScreenWidth(); //обновляем значение ширины экрана, не относится к скрипту
	var cols=CountColumns();// кол-во столбцов в таблице
	if(g_count==cols){return;}//ничего не делать, если кол-во колонок то же, что и ранее
	g_count=cols; 
	var table=document.createElement("table");
	var tbody=document.createElement("tbody");
	var rows=g_tds.length/cols; // считаем кол-во строк в таблице
	var width=100/cols; // ширина каждой ячейки в процентах
	for(var j=0;j<rows;j++){
		var row1=document.createElement("tr");
		for(var i=0;i<cols;i++){
			if(!g_tds[0]){break;}
			g_tds[0].style.width=width+"%";
			row1.appendChild(g_tds[0]);
		}
		tbody.appendChild(row1);
	}
	table.appendChild(tbody);
	table=g_result.appendChild(table);// добавляем новую таблицу
	var prev=table.previousSibling;
	if(prev!=null)prev.parentNode.removeChild(prev);// удаляем старую таблицу
	
}
 
</script>


Прикладываю полную страничку с подключенным jquery.

Заранее большое спасибо за помощь.

crayday 01.09.2011 22:12

Подёргивания - ещё не причина для конфликта с jquery! =)

Просто страница становится тяжелее, FF лучше других кэширует страницу, вот у него и нет подёргивания, остальные грузят из кэша грубее.

Я буду прав, если скажу, что заявленные полсекунды конвульсий браузера - это всё-таки преувеличение, и речь идёт о мгновении?

stvord 01.09.2011 22:27

Цитата:

Сообщение от crayday (Сообщение 124182)
Я буду прав, если скажу, что заявленные полсекунды конвульсий браузера - это всё-таки преувеличение, и речь идёт о мгновении?

Да вы правы, и все таки этого никак не избежать?

crayday 01.09.2011 22:33

Такая проблема обычно не является проблемой, но
1. Как вариант можно попробовать назначить init обработчиком ready события, а не onload. Как минимум это не навредит.
2. Можно загрузить белый див поверх всего экрана (background: white; position: fixed; width: 100%; height: 100%; left: 0; top: 0), а когда содержимое страницы загрузится, убрать его. Дёрганья видно не будет, а эффект будет приблизительно тот же, как и когда страница просто загружается.


Часовой пояс GMT +3, время: 22:45.