http://www.gomatagorda.com/matagorda-weather/
我正在使用jQuery来加载[root] /data/weather-full.htm,这是由气象站每60秒上传一次。
我每隔30秒加载一次该文件,以最大限度地提高数据的新鲜度。
在Internet Explorer 7/8中,刷新后,右侧数据列的一半消失。我尝试了各种解决方案,包括DIV,前后空DIV,甚至表格。每次刷新时,文本数据的第一部分都会消失。
对此有任何帮助表示赞赏。我已经调试了这个特定错误大约2个月。
谢谢!
答案 0 :(得分:2)
如果您使用$.get
或$.ajax
使用GET
方法,那么IE将缓存AJAX请求。为了防止它,这个简单的黑客将会这样做:
$.get(URL,
{ nbRandom: Math.random() },
function(data){
//process AJAX response
});
nbRandom
是URL
未使用的参数名称,但只是为了让IE认为这是新请求,因此不会使用缓存。
<强>更新强>
我检查了网站。请记住,我不使用IE浏览器。
在页面中,我看到<div>
关闭标记后有一个<div id="weatherdata">
标记。此单<div>
没有关闭标记,但后面紧跟</td>
。请检查页面中的标记余额,确保所有平衡且有效的XHTML。大多数bug和quirk行为来自不平衡和未闭合的标签。
可能或可能没有相关的其他事情,我从不在我的代码中使用.load()
,而且我从未在IE中获得任何奇怪或错误。下面我重写你的功能:
function UpdateWeatherBar(){
var d = new Date();
$.get("http://www.gomatagorda.com/data/weather.htm",
{ t: d.getTime() },
function(data){
jQuery("#weatherbar").html(data);
});
}
jQuery(document).ready(function($) {
UpdateWeatherBar();
});
var reloadcam = setInterval(function(){
UpdateWeatherBar();
}, 30000);
您不需要if (document.getElementById("weatherbar") != null)
,jQuery会自动为您执行此操作。
使用上面的代码,您只需要在一个地方编写AJAX,然后在任何地方使用它。没有重复的代码,当您需要更新它时会很难。此外,由于您使用UpdateWeatherBar()
致电setInterval
,因此从该函数中移出jQuery(document).ready()
阻止可能会使错误消失。
我希望这个和标签平衡检查能解决IE中的错误。
答案 1 :(得分:0)
如果我不得不猜测我会说你正在写文件时抓住文件。没有详细说明编码文件锁定系统来保护读取,而它被写入i我会建议测试文件以获得预期的最后一行数据...如果它不存在则将负载延迟几秒/毫秒
答案 2 :(得分:0)
在我出现的第一个THW索引之后,我看到的唯一奇怪的是无关的</
。当它被添加到文档树中时,这可能会搞砸IE?在那时修复HTML,看看你是否得到了更好的结果。