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 加载完成之前运行;延迟这个的最好方法是什么?

4

1 回答 1

5

我把事情复杂化了一点;我真正需要的是加载事件:

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 回答