页面在F12开发者模式下能正常显示关闭F12就不正常的记录

      这两天被一个问题缠住了,JS原生Ajax返回的数据不能正常被js其它地方调用以及调用后页面在F12开发者模式下能正常显示,关闭F12就不正常。关于问题说明如下:

      1、JS原生Ajax返回的数据不能正常被js其它地方调用:

      因为Ajax默认是异步返回,所以走完Ajax其它地方的JS早已加载完毕,其它地方是引用不到该处的值的(包括你自己设置一个全局变量,想通过这个全局变量来赋值获取,同样不行),还有一个原因就是“异步”,但是你改为同步仍然不行,切记。

      2、调用后页面在F12开发者模式下能正常显示,关闭F12就不正常:

      这里面原因是因为我在js代码里用了console的缘故,console在IE浏览器中兼容性很差,导致F12模式下智能识别console不报错,但是关闭F12就不识别console(其实这么说不怎么准确,只是个人这么理解,详见https://developer.mozilla.org/zh-CN/docs/Web/API/Console)。IE想用console的解决方法就是在js开始加入如下代码:

window.console = window.console || (function () {
    var c ={};
    c.log = c.warn = c.debug = c.info = c.error = c.time = c.dir = c.profile= c.clear = c.exception = c.trace = c.assert = function(){};
    return c;
})();

      综上,本次开发过程中问题解决后的代码如下:

window.console = window.console || (function () {
    var c ={};
    c.log = c.warn = c.debug = c.info = c.error = c.time = c.dir = c.profile= c.clear = c.exception = c.trace = c.assert = function(){};
    return c;
})();

var gettime = function(obj) {          //本页面其他方法都是为本方法服务的

  var t1 = obj.time; //此处就是需要Ajax返回结果的地方(流程接收时间),
  var t2 = (new Date()).getTime(); //当前时间
  var t3 = document.getElementById("Ins_CD1TB1R15C1FD196").value; //限时天数
  var days = t3 - Math.floor((t2 - t1) / (1000 * 60 * 60 * 24)); //计算时间差
  document.getElementById("Ins_CD1TB1R13C3FD346").value = '';
  if (days > 0) {
    document.getElementById("Ins_CD1TB1R13C3FD346").value = 0;
  } else {
    document.getElementById("Ins_CD1TB1R13C3FD346").value = days;
  }
} 

function getQueryString(name) {     //从地址栏获取需要的参数的方法
  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
  var r = window.location.search.substr(1).match(reg);
  if (r != null) return unescape(r[2]);
  return null;
} 

function getLastSegmentTime(gettimeCallback) {
  var processid = getQueryString("processId");         //从地址栏获取流程id
  if (processid !== null) {                            //Ajax获取后台数据
      var xhr = new XMLHttpRequest(); //创建 
       xhr.open("get", "../archivestask/searchProcessId.do?processid=" + processid, true); //连接
     xhr.send(null); //发送
    xhr.onreadystatechange = function () { //监听状态、处理数据
      if (xhr.readyState == 4) {
        if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {
          console.log(0);               //关闭F12会异常的罪魁祸首
          var return_obj = eval('(' + xhr.responseText + ')');         //后台返回数据
          gettimeCallback(return_obj);
        } else {
          alert("Request was unsuccessful: " + xhr.status);
        }
      }
    };
  }
}

// 页面完成加载处理
function loadFinishDeal() {
  getLastSegmentTime(gettime);
}


loadFinishDeal();

      补充:后台往前台Ajax返回数据时代码片段如下:

		JSONObject json = new JSONObject();
		json.put("time", time);      //time为从数据库已经获取到的值
		//解决前台乱码
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		//取得流向JSP传递数据    
			response.getWriter().println(json.toString());
		return null;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值