【发布时间】:2010-09-16 23:12:37
【问题描述】:
我的 webapp 中有一个 img 标签,它使用 onload 处理程序来调整图像大小:
<img onLoad="SizeImage(this);" src="foo" >
这在 Firefox 3 中运行良好,但在 IE7 中失败,因为传递给 SizeImage() 函数的图像对象由于某种原因具有 0 的宽度和高度——也许 IE 在完成加载之前调用了该函数?在对此进行研究时,我发现其他人在使用 IE 时也遇到了同样的问题。我还发现这不是有效的 HTML 4。这是我们的 doctype,所以我不知道它是否有效:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
是否有合理的解决方案来调整加载图像的大小,最好是符合标准的解决方案?该图像用于用户上传自己的照片,几乎可以是任何尺寸,我们希望最大显示为 150x150。如果您的解决方案是在上传时调整图像服务器端的大小,我知道这是正确的解决方案,但我被禁止实施它:( 它必须在客户端完成,并且必须在显示上完成。
谢谢。
编辑:由于我们应用程序的结构,在文档的 onload 中运行此脚本是不切实际的(几乎不可能)。我只能合理地编辑图像标签和它附近的代码(例如我可以在它下面添加一个<script>)。此外,我们已经有 Prototype 和 EXT JS 库......管理层宁愿不必添加另一个(一些答案建议使用 jQuery)。如果可以使用这些框架解决这个问题,那就太好了。
编辑 2:不幸的是,我们必须支持 Firefox 3、IE 6 和 IE 7。希望也支持所有基于 Webkit 的浏览器,但我们的网站目前不支持它们,我们可以容忍只适用于 Big 3 的解决方案。
【问题讨论】:
-
问题:SizeImage() 是否只是将图像大小调整为 150x150?我有不同的解决方案,都比下面的更好,但这取决于你需要 SizeImage() 做什么。
-
@Eric:不,它应该保持图像的纵横比。此外,如果原始图像小于 150x150,则根本不应该调整大小(我不想拉伸和图像)。
标签: javascript html internet-explorer image