@schurin
Люблю катать с гор, особенно на санках

Как дождатся отрисовки только что вставленного xml документа в DOM?

1. Подгружаю svg
2. вставляю в дом
3. Отдаю её PanZoom'у
4. Обрабатываю активные элементы

дело в том, что отображается SVG только после 4го пункта
а мне бы показать её пользователю как только загрузилась и вставилась, ибо пункт 3и4 могут идти около 10-20 секунд

обернул код с 3 и 4 пунктом в setTimeout дабы поставить в очередь, что не помогло
как можно с выполнения JS, сказать браузеру мол начинай рендеринг

var container = $('#container');

// 1: Загружаю svg
var ajax = $.ajax({url, succsess: succsess});

function succsess(xml){


		// 2: Вставиляю в дерево документа и обрабатываю

	var normalizeXML = Helper.getNormalizeXML(xml), svg;

	container.append(normalizeXML);

	svg = container.find('svg');

	svg.attr('width', container.outerWidth()).attr('height', container.outerHeight());

		// 3: Отдаю svg для скрикту зума
		// этот скрипт очень долго орабатывает
		// зависит от размера svg, бывает и 10-20 сек.
		// в ie на этот момент svg еще не отобразилась 

	Helper.svgPanZoom(svg);

		// 4: обработка активных элементов на svg

	parseSvg(svg);

		// для ie отображение на экране произойдёт тут
		// но если сделать так

		/*	setTimeout(function(){

				Helper.svgPanZoom(svg);

				parseSvg(svg);


			}, 5000);*/

		// svg отобразится раньше чем отработает скрипт зума и парсинг активных элементов
		// проблема не касается нормальных браузеров
		// к сожалению наши клиенты пользуют ie 10

}
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ответы на вопрос 1
twobomb
@twobomb
continer.append(normalizeXML);// переменная то container должна быть, а у тебя continer
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы