2011-10-24 22 views
1

我有一个非常复杂的网页,它使用了大量的Ajax和Javascript。我的问题是,这个Javascript操纵div中的背景图片(将其滚动到两侧)。当我打F5(大部分是FF)时,这只会导致“半路”刷新。内容刷新,但div中的背景保持在相同的位置。这会导致问题,因为偏移量计算错误(脚本认为背景位于起始位置,但实际上它已移动)。F5没有完全刷新我的页面

有什么办法强制全面刷新来摆脱这个问题?我为我的Javascript使用jQuery。一个解决方法是检查加载时的偏移量,但是在这一点上实施屁股会很痛苦。

任何想法?

编辑:导致此问题的图片不使用JavaScript或ajax加载。它是纯粹的,静态的HTML。

+0

也许你有一些东西要缓存,不应该是?也许可以通过Tamper-Data firefox插件查看网站资源的标题。 – Oliver

+0

而不是检查加载的偏移量,为什么不明确地将其重置到加载(或文档就绪)时所需的位置? – nnnnnn

+0

那么@nnnnnn,这将是我的解决方法。问题是当页面完全刷新时,这不是问题。所以我只是想检查是否有可能在刷新时有一个偶数听众,以确保它完全完成。 – OptimusCrime

回答

1

为什么你不重置页面加载时的默认背景状态? 有没有原因,为什么不行?

$(document).ready(function(){ 
    // Set whatever value you're changing to make the background move to it's default 
    $('.changing-background').css({ 
    'left' : ?px, 
    'background-position' : ?px ?px 
    // Whatever you're using 

    }) 
}) 
+0

你说得对,那是我最终的解决方案。我面临的问题是,所有使用jQuery(position()。left,css('margin-left'))的位置跟踪一直给我0.我只是强迫位置在负载下为0px。解决了我的问题。 – OptimusCrime

2

尝试使用“Ctrl + F5”,它会强制浏览器重新加载页面中的所有内容。

+2

虽然在某些情况下(我看到在CKEditor中,当我更改了一些JS文件时),但可能需要清除所有缓存,因为CTRL + F5不适用于自加载文件(与AJAX或IFRAME内)。 CTRL + SHIFT + DEL>清除所有缓存。 –

+0

好评,有时候如果你使用很多Ajax调用很有用 –

+1

我意识到这一点,但是对于使用这个页面的用户来说,他们很可能会碰到F5,并且会出现这个问题。 – OptimusCrime

0

在Mozilla Firefox中,Ctrl+Shift+P开始隐私浏览并且没有任何内容被缓存。或者您可以设置cache:false你的Ajax请求喜欢

$.ajaxSetup({ 
cache:false 
}); 

添加no-cache

<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 

进一步的信息可以发现here

+1

我意识到这一点,但对于使用此页面的用户来说,他们很可能会碰到F5,并且会出现此问题。 – OptimusCrime

+0

编辑答案 – Rafay

+0

感谢您的输入。但是导致这个问题的背景图片没有使用ajax og javascript加载。图片是纯静态html。我应该在我的第一篇文章中澄清一下。 – OptimusCrime

1

的唯一字符串添加到您的JavaScript文件路径的终点例如test.js?nocache = 99999999。这将使浏览器认为它是一个非缓存文件,并且每次都下载一个新的副本。

这意味着更多的数据传输,但除非你想实现客户端修复,否则我不认为这里有很多选择。

+0

到目前为止,我认为这是唯一可行的建议。问题是,js文件长达1400多行,我想避免这种选择。除非我采取解决方法,否则这听起来像是解决问题的方法。 – OptimusCrime

+0

它不会“每次下载一个新的副本”,只有每次更改“?”后的字符串。当您更改JS文件内容时,只需在“?”后面添加一个数字,然后浏览器再次下载它,直到您再次更改数字。 –

+0

请参阅:http://stackoverflow.com/questions/2320500/forcing-cache-expiration-from-a-javascript-file –

0

如果你只是按F5将加载内容从cache.So使用“CTRL + F5”。它刷新浏览器的缓存也是在重装的时间。

+1

我意识到这一点,但对于使用此页面的用户来说,他们很可能只是打F5 ,并发生此问题。 – OptimusCrime