JS没有'IE中的t fire在Chrome中没有
JS doesn't fire in IE does in Chrome
以下代码似乎在IE中不起作用(使用9)-测试1启动,但测试2不起作用。IE有不同的方法吗?
<script>
$(document).ready(function () {
overlay = $("#overlay");
img = $("#myimg");
alert('test 1');
img.load(function () {
alert('test 2');
var myPercent = 50;
var myHeight = $("#myimg").height() / 100 * myPercent;
overlay.height(myHeight);
overlay.width($("#myimg").width());
$(".percent").css('margin-top', $("#myimg").height()/2 - $(".percent").height()/2);
$(".percent").text(myPercent + "%");
});
});
</script>
EDIT:通过使用$(window).load(function(){而不是文档就绪并删除函数
从.load()的jQuery API
与图像一起使用时加载事件的注意事项
开发人员试图使用.load()解决的一个常见挑战快捷方式是当图像(或图像)已经完全加载。有几个已知的注意事项这一点值得注意。这些是:
它在跨浏览器中工作不稳定也不可靠
如果将image src设置为与之前相同的src
它没有正确地弹出DOM树可以停止激发已经存在于浏览器缓存中的图像
利用$(window).load()
:
$(window).load(function() {
alert('test 2');
var myPercent = 50;
var myHeight = $("#myimg").height() / 100 * myPercent;
overlay.height(myHeight);
overlay.width($("#myimg").width());
$(".percent").css('margin-top', $("#myimg").height()/2 - $(".percent").height()/2);
$(".percent").text(myPercent + "%");
});
从技术上讲,您应该能够在img标记上添加onload参数,该参数调用做同样事情的js函数。我还没有测试过,但值得一试。
...
<script>
function resizeImg ($img) {
// code
}
</script>
...
<img onload="resizeImg($(this));" src="foo.png" />
那么您还不如使用jQuery。
...
<script>
$("#fooImg").load(function () {
// code
});
</script>
...
<img id="fooImg" src="foo.png" />
如果你不介意使用插件,Paul Irish制作了一个简单的插件来处理图像加载,因为.load()不处理图像。该插件被移动并变成了一个项目,可以在GitHub上找到。
$.fn.imagesLoaded = function (callback) {
var elems = this.filter('img'),
len = elems.length,
// data uri bypasses webkit log warning (thx doug jones (cjboco))
blank = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
elems.bind('load', function () {
// check image src to prevent firing twice (thx doug jones (cjboco))
if (--len <= 0 && this.src !== blank) {
callback.call(elems, this);
}
}).each(function () {
// cached images don't fire load sometimes, so we reset src.
if (this.complete || this.complete === undefined) {
var src = this.src;
// webkit hack from http://groups.google.com/group/jquery-dev/browse_thread/thread/eee6ab7b2da50e1f
this.src = blank;
this.src = src;
}
});
};
你可以在这把小提琴上看到它的演奏。
http://jsfiddle.net/denniswaltermartinez/c4DMH/
img.load()作为事件不受IE支持。事实上,这是不必要的,$(document).ready()函数已经确保加载了img和其他元素。只需将其移除即可。
相关文章:
- Chrome WebKitGetUserMedia
- JQueryhide()不适用于Mozzilla,但适用于Chrome
- 在chrome.tabs.onCreated之后加载HTML页面
- chrome扩展中的navigator.geolocation.getCurrentPosition
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- chrome扩展更改主机/域警告
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 如何在chrome扩展中重定向到html页面
- Chrome扩展没有't在重新加载之前考虑期权价值
- Google/html5语音识别JavaScript SDK Chrome网络工具包SpeechRecognition
- 激活chrome上的chrome.notifications对象
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- JS可以在Chrome中工作,但不能在Firefox中工作
- Chrome加载旧版本的Javascript文件
- 试图阻止Chrome通过扩展关闭
- Ajax load在chrome中不起作用,而在Fire fox中工作
- 加载未打包的扩展时执行chrome.runtime.oInstalled fire
- JS没有'IE中的t fire在Chrome中没有
- Fire Key事件从chrome扩展:Uncaught TypeError:不能读取属性'时间'的定义