解决方案:
http://noteslog.com/post/how-to-fix-the-resize-event-in-ie/
发展问题:
我遇到了与jQuery的IE7兼容性问题。本质上应该发生的是resize事件告诉两个div不显示,并将另一个div更改为visible。然后在发生setTimeout之后重新打开div,并且不显示所显示的另一个div;然后重新加载页面。这适用于IE8,IE9,Mozilla,Chrome和Safari。所以这必须与IE7相关。有什么建议和想法吗?我总是感激不尽。
<script type="text/javascript">
$(document).ready(function(){
$(window).resize(function() {
$('#res_mainContainer').css({"display":"none"});
for ( var h = 1; h < 100; h++)
{
$('#CarLot' + h).css({"visibility":"hidden"});
}
$('#loading').css({"display":"block"});
var constantResize = jQuery(window).width() + 'x' + jQuery(window).height();
$("#WINDOWS_RESOLUTION").text(constantResize);
setTimeout( function() {
$('#res_mainContainer').css({"display":"block"});
for ( var h = 1; h < 100; h++)
{
$('#CarLot' + h).css({"visibility":"visible"});
}
$('#loading').css({"display":"none"});
location.reload()
}, 2000 );
});
});
</script>
受限制时使用的旧JavaScript:
<script type="text/javascript">
var timeoutId;
function throttleResize(fn) {
window.onresize = function () {
window.clearTimeout(timeoutId);
timeoutId = window.setTimeout(function () {fn.call();}, 1000);
document.getElementById("loading").className = "loading-visible";
document.getElementById('res_mainContainer').style.visibility = 'hidden';
for ( var h = 1; h < 40; h++)
{
document.getElementById('Carlot' + h ).style.visibility = 'hidden';
}
};
}
function doSomething() {
window.location.reload(true);
document.getElementById("loading").className = "loading-invisible";
document.getElementById('res_mainContainer').style.visibility = 'visible';
for ( var h = 1; h < 40; h++)
{
document.getElementById('CarLot' + h ).style.visibility = 'visible';
}
}
throttleResize(doSomething);
</script>
答案 0 :(得分:1)
在IE和WebKit浏览器中持续调整大小,所以当你重新调整窗口时,你可能会调用你的处理程序数十次或数百次,所以这可能就是你看到IE7的原因(使用比IE8慢得多的JS引擎)或任何其他现代浏览器)锁定。
通常你想要做的是限制resize事件(不经常调用它)。见这里:http://mbccs.blogspot.com/2007/11/fixing-window-resize-event-in-ie.html