Javascript: как я могу отложить возврат значения для img.complete - PullRequest
4 голосов
/ 21 сентября 2010

Я написал скрипт для проверки поддержки SVG в теге IMG:

function SVGinIMG() {
  var SVGdata = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D'
  var i = document.createElement('img');
  i.setAttribute('src',SVGdata);
  return i.complete;
}
window.onload = function() {
  var hasSVG = SVGinIMG();
  alert(hasSVG);
}

Это делает то, что я хочу, за исключением того, что когда я запускаю скрипт в браузерах WebKit, свойство complete не срабатывает при первой загрузке страницы; когда я обновляю страницу, она работает как надо. Функция return работает до завершения загрузки img; Какой лучший способ отложить это?

1 Ответ

5 голосов
/ 21 сентября 2010

Я немного усложнял вещи; все, что мне действительно нужно, это событие load :

function SVGDetect() {
  var testImg = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D';
  var img = document.createElement('img')
  img.setAttribute('src',testImg);
  img.addEventListener('load',setCSS,true);
}

Эта функция запускает другую функцию при загрузке изображения, чего нет в браузерах, которые не поддерживают SVG в изображениях.

...