[英]jQuery Slideshow not working in IE8, works fine in Safari/Firefox
[英]jQuery's .load() not working in IE - but fine in Firefox, Chrome and Safari
我正撞在墙上对着这个......
我有以下代码:
$("#home").click(function(e) {
$(".tabs").attr("src","tabs-home.gif");
$(".islice").hide('fast');
$(".islice").load("home.html");
$(".islice").show('fast');
e.preventDefault();
});
它在Firefox,Safari和Chrome中运行得非常好,但IE只运行attr()并且不执行隐藏/显示或加载。 我尝试删除隐藏和显示它仍然无法正常工作。
IE报告没有语法错误,即使使用DebugBar也是如此。 我能做错什么?
您可以在http://www.brick-n-mortar.com上查看实际网站
我有同样的问题。 我发现的许多网站都建议IE可能会缓存你的代码,并建议将代码附加到
$("#home").click(function(e) {
$(".tabs").attr("src","tabs-home.gif");
$(".islice").hide('fast');
$(".islice").load("home.html?" + new Date().getTime() );
$(".islice").show('fast');
e.preventDefault();
});
这应该确保IE不缓存。
有关详细信息,请参阅http://zacster.blogspot.com/2008/10/jquery-ie7-load-url-problem.html 。
$ .ajaxSetup({cache:false});
这将清除IE中的缓存和.load()将起作用。 我试过了。
如果您正在加载的HTML被破坏,jQuery的.load()将无法在IE中运行..这对我来说是个问题。 修复HTML之后,IE中的一切都很棒!
我遇到了这个问题,整天都在摸不着头脑。 然而,终于找到了一个解决方案,并实现了一个怪异的IE是什么。
首先,
$(".islice").load("home.html");
无论我们怎么努力,都行不通。 我们将不得不使用
$.get("home.html", function (data) ....... );
我会解释“.....”,因为一般
$.get("home.html", function (data) { $(".islice").html(data); }); // doesn't work
不行。
代替
$.get("home.html", function (data) {
data = '"' + data + '"';
$(".islice").html(data);
var newHTML = $('.islice').html();
$('.islice').html(newHTML.substr(1,newHTML.length-2));
}); // works
将工作。
说明:=>数据可能有新的行号。 所以设置innerHTML = data; 因为他们而休息。 通过添加引号,我们将其转换为字符串,但使html添加额外的引号,以便我再次删除引号。
道德:=> IE糟透了..没有其他..
我发现这个解决方法工作:
$.ajax("loaded.html", {
cache: false,
success: function(data, textStatus, jqXHR) {
$("#content-1").html(data);
},
dataType:"html"
});
哪里:
我发现.load()函数与IE不能很好地工作,但使用$ .get()代替完美,例如
var dummy = new Date().getTime();
$.get("home.html" + dummy, function(data) {
$(".islice").html(data);
});
我认为问题的出现是因为编码模糊。 尝试显式指定响应编码(即HTTP标头中的字符集),如:
<meta charset="utf-8">
我和IE9有同样的问题。
默认情况下,所有ajax请求都以静默方式死亡。 通过使用http://api.jquery.com/ajaxError/,我能够通过记录异常消息来确定错误类型:代码为c00ce56e的错误。
事实证明,这意味着响应没有被传递utf-8编码 ,因为它应该响应ajax请求。
结果我在header('Content-type: text/html; charset=utf-8');
输入了错误header('Content-type: text/html; charset=utf-8');
e.preventDefault()
在IE中不会有任何区别 - 你必须使用return false;
阻止事情发生:
$("#home").click(function(e) {
$(".tabs").attr("src","tabs-home.gif");
$(".islice").hide('fast');
$(".islice").load("home.html");
$(".islice").show('fast');
e.preventDefault();
return false;
});
要详细调试,请查看Firebug 。
好的...我有同样的问题,即8岁以上。 这是我的解决方案,希望它有助于某人:
1)首先,在IE中调试ajax非常困难。 为什么? 控制台没有达到标准,但还有另一个更大的问题 - 缓存。 第一次加载错误时它会保留在缓存中。 比你花2小时修复问题看到相同的结果(第1次这样做)。 感谢这篇文章(和讨论):http: //zacster.blogspot.cz/2008/10/jquery-ie7-load-url-problem.html我自定义了我的ajax调用:
$(container).load(link +'?random ='+ Math.random()* 99999 +'。postt-list li',function(){//做一些东西}
随机网址效果很好
2)@Neno是对的! IE有HTML错误的问题。 验证您的加载HTML http://validator.w3.org/
我遇到了类似的问题,并且能够以这种方式工作:
.load()
和.html()
在IE中不能很好地工作; 特别是如果您没有有效的HTML。
$("#home").click(function(e) {
$(".tabs").attr("src","tabs-home.gif");
$(".islice").hide('fast');
$.ajax({
url: "home.html",
success: function(data, textStatus, xhr) {
$(".islice")[0].innerHTML = data;
}
});
$(".islice").show('fast');
e.preventDefault();
});
为了防止对IE进行窃听,请向其添加math.random()参数,以便它不使用此不相关的缓存...
你是.load()
进入<table>
?
嗯...也许把.islice
到一个级别,进入<td>
,或者可能是<div>
之间...
(这不一定是问题,但这是可能的......)
我有同样的问题,因为我的工作加入了头脑
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
如果使用PHP加载,请重置数组值。 例如:
$result = ''; // do this
$row = ''; // do this
$data = ''; // IMPORTANT Kills odd behavior CACHE FOR IE
$result = mysql_query("your sql here");
while ($row = mysql_fetch_array($result)){
$data[] = $row ..... blah blah blah...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.