Javascript $(";img/>;).attr(";src";,something).load()在IE中不受支持;9?
Javascript $(";img/>;).attr(";src";,something).load()在IE中不受支持;9?,javascript,jquery,internet-explorer,Javascript,Jquery,Internet Explorer,$(' 在这里,我使用$(“”)进行了测试。在IE 7中加载,我得到的是: 当我遇到律师时,我得到以下信息: 无法获取属性“attr”的值:对象为null或未定义 在我的网页中使用时,我得到以下信息: “SCRIPT5007:无法获取属性'slice'的值:对象为null或未定义” jquery.js,第2行字符32039 发生了什么事?(讨厌IE…)在IE中,缓存映像时并不总是触发加载事件。请尝试以下操作: var img = new Image(); img.src = "http://de
$('
在这里,我使用$(“”)进行了测试。在IE 7中加载,我得到的是:
当我遇到律师时,我得到以下信息:
无法获取属性“attr”的值:对象为null或未定义
在我的网页中使用时,我得到以下信息:
“SCRIPT5007:无法获取属性'slice'的值:对象为null或未定义”
jquery.js,第2行字符32039
发生了什么事?(讨厌IE…)在IE中,缓存映像时并不总是触发加载事件。请尝试以下操作:
var img = new Image();
img.src = "http://derek1906.site50.net//navbar/images/pic3.png";
if (img.complete || img.readyState === 4) {
$("body").html("done");
}
else {
$(img).on("load error onreadystatechange",function(e){
if (e.type === "error") {
$("body").html("Image failed to load.");
}
else {
$("body").html("done");
}
});
}
另外,不要忘记等待DOMReady
事件,否则如果图像加载速度足够快,$(“body”)
可能还不存在
编辑:
我有一个可以帮助简化图像预加载的插件:在IE中,缓存图像时并不总是触发加载事件。请尝试以下操作:
var img = new Image();
img.src = "http://derek1906.site50.net//navbar/images/pic3.png";
if (img.complete || img.readyState === 4) {
$("body").html("done");
}
else {
$(img).on("load error onreadystatechange",function(e){
if (e.type === "error") {
$("body").html("Image failed to load.");
}
else {
$("body").html("done");
}
});
}
另外,不要忘记等待DOMReady
事件,否则如果图像加载速度足够快,$(“body”)
可能还不存在
编辑:
我有一个插件可以帮助简化图像预加载:确保加载功能正在执行。我最近处理了这个问题。在IE中,加载功能没有对缓存的图像启动。出于我的目的,我可以通过从不允许图像缓存来解决这个问题。(一个丑陋的解决方案)
例:
改为:
src="loremIpsum.jpg?nocache=" + new Date().getTime()
在这里,“nocache”可以更改为对您有意义的任何内容
从jQuery文档中:
与图像一起使用时加载事件的注意事项
开发人员试图使用.load()
快捷方式解决的一个常见问题是,在图像(或图像集合)完全加载后执行函数。应注意以下几个已知的注意事项:
- 它在跨浏览器中无法稳定工作,也不可靠
- 如果图像src设置为与以前相同的src,则在WebKit中无法正确触发
- 它不能正确地在DOM树上冒泡
- 对于已经存在于浏览器缓存中的图像,可以停止触发“
确保正在执行加载函数。我最近处理了这个问题。在IE中,加载函数没有在缓存的图像上启动。出于我的目的,我能够通过从不允许图像缓存来解决这个问题。(一个丑陋的解决方案)
例:
改为:
src="loremIpsum.jpg?nocache=" + new Date().getTime()
在这里,“nocache”可以更改为对您有意义的任何内容
从jQuery文档中:
与图像一起使用时加载事件的注意事项
开发人员试图使用.load()
快捷方式解决的一个常见问题是,在图像(或图像集合)完全加载后执行函数。应注意以下几个已知的注意事项:
- 它在跨浏览器中无法稳定工作,也不可靠
- 如果图像src设置为与以前相同的src,则在WebKit中无法正确触发
- 它不能正确地在DOM树上冒泡
- 对于已经存在于浏览器缓存中的图像,可以停止触发“
所以我在jfidde中做了一些快速测试,提取了相关的代码并在ie7-8-9中独立运行。它们都运行得很好。我可以自信地说,并不是这段代码破坏了您的页面
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title> - jsFiddle demo by DerekL</title>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.js'></script>
<script type='text/javascript'>
$('<img/>').attr('src', "http://derek1906.site50.net//navbar/images/pic3.png").load(function() {
$("body").html("done");
$("<img/>").appendTo("body").attr("src","http://derek1906.site50.net//navbar/images/pic3.png");
});
</script>
</head>
<body>
Loading...
</body>
</html>
在源代码中搜索该切片调用。如果试图使用.slice()操作jQuery集合,它将中断。jQuery集合是对象,而不是数组。(这可能是您的问题,也可能不是您的问题)
确保在.load()方法返回后调用任何试图触摸该图像的代码。常见错误是执行以下操作:
$('<img id="me" />').attr('src', 'my.jpeg')
.load( function(){ $(this).appendTo("body"); } );
alert( $('#me').attr('src') );
$('
如果这是页面上的唯一图像,则上面的脚本可能会失败,因为appendTo()是异步调用的,并且几乎肯定是在以下代码行执行并失败后调用的。请确保从.load()回调运行任何操作该图像的逻辑。(正如您在上面的示例代码中所做的那样)
如果您粘贴页面源代码的其余部分,我可以看一看!祝您好运!因此我在jfidde中进行了一些快速测试,并提取了相关代码并在ie7-8-9中独立运行。它们都运行良好。我可以自信地说,不是这段代码破坏了您的页面
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title> - jsFiddle demo by DerekL</title>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.js'></script>
<script type='text/javascript'>
$('<img/>').attr('src', "http://derek1906.site50.net//navbar/images/pic3.png").load(function() {
$("body").html("done");
$("<img/>").appendTo("body").attr("src","http://derek1906.site50.net//navbar/images/pic3.png");
});
</script>
</head>
<body>
Loading...
</body>
</html>
在源代码中搜索该切片调用。如果试图使用.slice()操作jQuery集合,它将中断。jQuery集合是对象,而不是数组。(这可能是您的问题,也可能不是您的问题)
确保在.load()方法返回后调用任何试图触摸该图像的代码。常见错误是执行以下操作:
$('<img id="me" />').attr('src', 'my.jpeg')
.load( function(){ $(this).appendTo("body"); } );
alert( $('#me').attr('src') );
$('
如果这是页面上的唯一图像,则上面的脚本可能会失败,因为appendTo()是异步调用的,并且几乎肯定是在以下代码行执行并失败后调用的。请确保从.load()回调运行任何操作该图像的逻辑。(正如您在上面的示例代码中所做的那样)
如果您粘贴页面源代码的其余部分,我可以查看一下!祝您好运!先添加加载事件,然后设置img'src
由于ie的运行速度比设置src时快,因此“加载”事件已完成
新的加载处理程序将在下一次更改时执行首先添加加载事件,然后设置img'src
由于ie的运行速度比设置src时快,因此“加载”事件已完成
新的加载处理程序将在下一次更改时执行以注释而不是答案的形式发布,因为我不确定这是否是问题所在。在IE中,如果我没记错的话,您需要在DOM中添加一个元素,然后才能将事件附加到DOM中。但它可以在Chrome、Firefox上运行……为什么不能在IE中运行?我在IE8中运行了您的小提琴,其工作原理与在Chrome中相同。发布作为评论