4

IMG タグで SVG サポートをテストするスクリプトを作成しました。

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 ブラウザーでスクリプトを実行すると、最初にページをロードしたときに完全なプロパティがトリガーされません。ページを更新すると、正常に機能します。imgの読み込みが完了する前にreturn関数が実行されています。これを遅らせる最良の方法は何ですか?

4

1 に答える 1

5

私は物事を少し複雑にしていました。本当に必要だったのは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 をサポートしていないブラウザーの場合は決して実行されません。

于 2010-09-21T13:49:59.290 に答える