В этом javascript-коде я загружаю кучу ссылок изображений, а затем рисую их на холсте в теме сетки. Я получаю количество ссылок, а затем устанавливаю ширину и высоту холста соответственно, поэтому в каждой строке должно быть 200 изображений. Высота основывается на общем количестве изображений. Проблема, которую я замечаю, заключается в том, что на основе высоты, которую я использую, изображения отображаются на холсте. Например, если я задаю высоту как 12 строк, тогда я вижу изображения, но если бы я установил ее над этим, то изображения не появятся. Также даже при установке в 1 строке изображения отображаются только в Firefox 23. IE9 и chrome29 ничего не показывают.Необычное поведение при рисовании большого количества изображений на большом холсте
Кто-нибудь знает, если здесь что-то не так, или что такое стабильный способ рисования большого количества изображений в большой холст?
Спасибо.
function onProfileSuccessMethod(sender, args) {
alert("Request Arrived");
var listEnumerator, picCount, item, picobj, path, office, ctx, x, y, imageObj;
listEnumerator = listItems.getEnumerator();
picCount = listItems.get_count();
var w = 125;
var h = 150;
var rl = 200;
var canvas = document.createElement('canvas');
canvas.id = "picGallery";
canvas.width = w * rl;
canvas.height = h * 12// * Math.ceil(picCount/rl);
canvas.style.zIndex = 0;
canvas.style.border = "0px solid white";
context = canvas.getContext("2d");
x = 0;
y = 0;
while (listEnumerator.moveNext()) {
item = listEnumerator.get_current();
picobj = item.get_item('Picture');
office = item.get_item('Office');
office = office == null ? "" : office;
if (picobj != null) {
path = picobj.get_url();
imageObj = new Image();
imageObj.xcoor = x;
imageObj.ycoor = y;
imageObj.src = path;
imageObj.onload = function() {
context.drawImage(this, this.xcoor, this.ycoor, w, h);
};
}
x += w;
if (x == canvas.width) {
x = 0;
y += h;
}
}
document.body.appendChild(canvas);
}
что GetEnumerator()? – dandavis
Итак, каждое изображение 125x150 пикселей? Потому что вы устанавливаете ширину холста 125 * 200 = 25000 пикселей и высоту до гораздо более разумного 150 * 12 = 1800 пикселей. –
Это неважно, но если вы знаете, это функция объектной модели клиента Microsoft SharePoint для перечисления через объекты, возвращаемые из запроса ajax (ecma scripting). – omega