在Visual Tools打开之前,Javascript在IE中行为不端 - 与控制台无关?

时间:2014-09-16 00:34:22

标签: 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();

该脚本从JSON提要中收集数据,该提要是通过前面包含的PHP脚本生成的:

if(isset($_GET['getdata'])){
  echo json_encode(array(
  'name' => $name,
  'gender' => $gender,
  'age' => $age,
  'country' => $mycountry,
  'pic' => $pic
)); exit;
}

这一切都运行正常 - 与FF,Chrome,Safari和Opera中的预期完全一样 - 但未在开放式工具未开启的IE 11中使用。

可能有一些调用或函数在产生控制台对象之前不起作用但我不知道它是什么!

1 个答案:

答案 0 :(得分:6)

这是因为在通过AJAX请求请求外部文件时,打开开发人员控制台会暂时禁用IE 11s缓存机制。

通过添加一个简单的时间戳来解决它,因此请求总是显得很新鲜:

$.getJSON('?getdata=1&timestamp='+$.now(), function(data) {

你问为什么要这么做? 甘拜下风。也许它属于jQuery的范畴。