在chrome和firefox中表现不同的简单javascript行
我需要经常检查页面MainContainer维度上的修改,当这种情况发生时,我将修复其维度,使其大于其中最大的元素(包装所有元素)在chrome和firefox中表现不同的简单javascript行,javascript,jquery,google-chrome,Javascript,Jquery,Google Chrome,我需要经常检查页面MainContainer维度上的修改,当这种情况发生时,我将修复其维度,使其大于其中最大的元素(包装所有元素) 如果有其他的方法,我真的不关心。困扰我的是换一行的效果 我的代码是: var pageMaxWidth = 0; var pageMaxHeight = 0; (function fixWidth() { var intervalCounter = 0; var interval = setInterval(function(){ var
如果有其他的方法,我真的不关心。困扰我的是换一行的效果 我的代码是:
var pageMaxWidth = 0;
var pageMaxHeight = 0;
(function fixWidth()
{
var intervalCounter = 0;
var interval = setInterval(function(){
var intervalMaxWidth = 0;
var intervalMaxHeight = 0;
$("#MainContainer table").each(function(index,elem){
if($(elem).width()>intervalMaxWidth)
{
intervalMaxWidth=$(elem).width();
//console.debug("new interval width");
}
if($(elem).height()>intervalMaxHeight)
{
intervalMaxHeight=$(elem).height();
//console.debug("new interval height");
}
});
if(pageMaxWidth!=intervalMaxWidth)//I'm the referred if
{
$("#MainContainer").width(intervalMaxWidth);
pageMaxWidth=intervalMaxWidth;
console.debug("width fixed");
}
if(pageMaxHeight!=intervalMaxHeight)
{
$("#MainContainer").height(intervalMaxHeight);
pageMaxHeight=intervalMaxHeight;
console.debug("height fixed");
}
},500);
})();
如果在评论中,如果(我是指如果)我改变:
$("#MainContainer").width(intervalMaxWidth);
到
并在Chrome中运行脚本,它将始终增加MainContainer宽度,这意味着它将始终计算为truepageMaxWidth=intervalMaxWidth
。如果我没有更改intervalMaxWidth值,怎么会发生这种情况?但它实际上增加了40,因为我通过控制台调试进行了检查。
在FireFox中,这种情况不会发生,我能想到的唯一解释是:
if($(elem).width()>intervalMaxWidth)
正在为其中一个元素执行,并且正在if条件内修改intervalMaxWidth。intervalMaxWidth是否在此处更改?intervalMaxWidth=$(elem).width();尝试将以下CSS应用于
#maincainer
元素:位置:相对;宽度:自动;高度:自动代码>“如果有其他的方法来做这件事,那不是我真正关心的…”,如果我在使用你的网站,那可能是我关心的;)像这样的小事情(每500毫秒运行一次)可以累加起来。“onresize”事件或上面的css解决方案对浏览器会更好吗?如果您想避免内联元素被包装,您还可以添加空白:nowrap代码>到您的CSS@Derek:是的,但将pageMaxWidth更改为等于interMaxWidth后,注释的if不应再次运行…除非我执行$(“#MainContainer”).width(intervalMaxWidth+40);对于+40,为什么要更改intervalMaxWidth?但是如果我只更改#MainContainer的宽度,它不应该在jquery选择中被捕获,对吗?此外,如果我使用$(“#maincainer”).width(intervalMaxWidth);没关系,但是$(“#maincainer”).width(intervalMaxWidth+40);在下一次运行中计算为true条件?可能是$(“#maincainer”).width(intervalMaxWidth+40);是否导致MainContainer内的元素自动调整大小并导致与$(“#MainContainer table”)相关的if条件计算为true?因此每次我添加40个元素时,内部元素都会尝试追赶,然后再添加40个元素,它们会一次又一次地追赶…始终更改intervalMaxWidth。。。接着呢?这只是一个理论。我不擅长html/浏览器相关的东西,所以我可能错了…您可以使用console.log语句来查看到底发生了什么。
if($(elem).width()>intervalMaxWidth)