说,存在一些奇怪的问题。一种解决方案是都用onload。因为onload 在ie 下有同步方面的问题。
所以,我用了 onreadystatechange 。 代码和 使用方法如下:
<script>
function SImage(callback)
{
var img = new Image();
this.img = img;
var appname = navigator.appName.toLowerCase();
if (appname.indexOf("netscape") == -1)
{
//ie
img.onreadystatechange = function () {
if (img.readyState == "complete")
{
callback(img);
}
};
} else {
//firefox
img.onload = function () {
if (img.complete == true)
{
callback(img);
}
}
}
}
SImage.prototype.get = function (url)
{
this.img.src = url;
}
var img = new SImage(icall);
img.get("http://space.cnblogs.com/images/logo.gif");
function icall(obj)
{
alert(obj.width);
}
</script>
function SImage(callback)
{
var img = new Image();
this.img = img;
var appname = navigator.appName.toLowerCase();
if (appname.indexOf("netscape") == -1)
{
//ie
img.onreadystatechange = function () {
if (img.readyState == "complete")
{
callback(img);
}
};
} else {
//firefox
img.onload = function () {
if (img.complete == true)
{
callback(img);
}
}
}
}
SImage.prototype.get = function (url)
{
this.img.src = url;
}
var img = new SImage(icall);
img.get("http://space.cnblogs.com/images/logo.gif");
function icall(obj)
{
alert(obj.width);
}
</script>
这段代码可以实现 获取一个远程图片的宽度。