Dav*_*vid 4 javascript internet-explorer
我正在尝试解决一个奇怪的javascript问题,其中脚本在所有浏览器中都能完美运行 - 除了IE,但是在打开开发工具的那一刻起作用.
我搜索过,这通常是因为IE没有产生控制台对象.但是,代码中没有提到控制台,我尝试了5个以上的代码,显然可以防止这个问题,但无济于事.
我很欣赏一些帮助来解决这个问题!
码:
var slide = function slider() {
var i = 0;
var slider = {
loop: function loop(data) {
$.getJSON('?getdata=1', function(data) {
var create = $('<div class="social-area pic">' + '<div class="socimgdiv">' + '<img class="socimg" src="' + data.pic + '">' + '<div class="infotxt">' + data.name + '<br><small>' + data.age + ', ' + data.country + '</small><br>' + '</div></div></div>'),
maxTimeout = 4000,
minimumTimeout = 1000;
$('#box').prepend(create);
$('.social-area').last().fadeOut(400);
setTimeout(function() {
$('.social-area').last().remove();
}, 400);
setTimeout(function() {
$('.pic').animate({
width: 'toggle'
}, 350).removeClass('pic');
}, 400);
i += 1;
if (i >= 5) {
timeouter = Math.floor(Math.random() * maxTimeout);
if (timeouter <= minimumTimeout) timeouter = minimumTimeout;
} else timeouter = 400;
setTimeout(function() {
this.loop();
}.bind(slider), timeouter);
});
}
};
slider.loop();
};
slide();
Run Code Online (Sandbox Code Playgroud)
该脚本从JSON提要中收集数据,该提要通过前面包含的PHP脚本生成:
if(isset($_GET['getdata'])){
echo json_encode(array(
'name' => $name,
'gender' => $gender,
'age' => $age,
'country' => $mycountry,
'pic' => $pic
)); exit;
}
Run Code Online (Sandbox Code Playgroud)
这一切都运行良好 - 正如FF,Chrome,Safari和Opera中所预期的那样 - 但是在开放式工具未开启的IE 11中则不行.
据推测,有一些调用或函数在产生控制台对象之前不起作用,但我不知道它是什么!
这是因为在通过AJAX请求请求外部文件时,打开开发人员控制台会暂时禁用IE 11s缓存机制.
通过添加一个简单的时间戳来解决它,因此请求总是显得很新鲜:
$.getJSON('?getdata=1×tamp='+$.now(), function(data) {
Run Code Online (Sandbox Code Playgroud)
你问为什么要这么做?甘拜下风.也许它属于jQuery的范畴.
| 归档时间: |
|
| 查看次数: |
1101 次 |
| 最近记录: |