LINUX.ORG.RU

Про JavaScript (дождаться загрузки изображения)


0

0

Подскажите, а как загрузить из скрипта новое изображение и дождаться его загрузки?

Насколько я понял, Image.onLoad работает только для изображений, которые вставлены при помощи тэга.

P.S. А кто-нибудь знает хорошие и полные справочники по ECMAScript, DOM и Javascript? То что на ecmascript.org больше похоже на формальное описание, чем на справочник. На w3schools далеко от полноты. Где-то на mozilla.org, вроде, был DOM Reference (не gecko), но что-то не могу его второй раз найти.

★★★★

Приведу пример:

var img = new Image();
function init(){
    img.src = 'advanced_technology.png';
    draw();
}

function draw(){
    var canvas = document.getElementById('tutorial');
    if (canvas.getContext){
        var ctx = canvas.getContext('2d');


        ctx.drawImage(img, 0, 0);
...

Иногда, если изображение не успевает загрузиться, получаем:

Ошибка: uncaught exception:
[Exception...
"Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE)
[nsIDOMCanvasRenderingContext2D.drawImage]"
 nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" 
location: "JS frame :: file:///home/davidov/tmp/cep2/script.js :: draw :: line 29"  data: no]

Davidov ★★★★
() автор топика
Ответ на: комментарий от Davidov

схематично на коленке:

function loadImage(url, success, failure) { var element = document.createElement('img') document.getElementsByTagName('body')[0].appendChild(element) element.style.display = 'none' element.src = url element.onLoad = function () { success.call(element, []) } }

повторяю, код УСЛОВНЫЙ, НА КОЛЕНКЕ

anonymous
()
Ответ на: комментарий от anonymous

Спасибо, идею понял: добавить в документ со display:none.

Но как-то неизящно :(

Davidov ★★★★
() автор топика

на тему документации - открываем сырцы mootools и читаем до полного просветления

barbuza
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.