IE8兼容那些事

该问题会出现IE :对象不支持 selectNodes 属性或方法 的提示,实际为接收数据问题

 

老项目一直使用IE8进行开发适配,由于嵌入到其他系统,存在IE版本不同的问题,导致IE出现异常,页面无法加载

经排查为 XMLHttpRequest 在接收xml行数据时出现截取问题

IE8与谷歌中使用源代码,可正常显示

    var objXMLHTTP;
	    	if (window.ActiveXObject) {
			objXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
		} else {
			if (window.XMLHttpRequest) {
				objXMLHTTP = new XMLHttpRequest();
			}
		}
		objXMLHTTP.open("POST", url, false);
		objXMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
		objXMLHTTP.setRequestHeader("RequestType", "ajax");
		objXMLHTTP.send(param);
		if (200 == objXMLHTTP.status) {
			return objXMLHTTP.responseXML;
		} else {
			return null;
		}

但使用iE11时出现问题,通过网络面板查看接收到的数据截取了.4k 数据,逐个排查后,发现responseXML数据被截取,但responseText 正常接收到完整数据,继而对应源码,进行修改

 

 var objXMLHTTP;
	    	if (window.ActiveXObject) {
			objXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
		} else {
			if (window.XMLHttpRequest) {
				objXMLHTTP = new XMLHttpRequest();
			}
		}
		objXMLHTTP.open("POST", url, false);
		objXMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
		objXMLHTTP.setRequestHeader("RequestType", "ajax");
		objXMLHTTP.send(param);
		if (200 == objXMLHTTP.status) {
            if(document.documentMode !=undefined && document.documentMode !=8 ){
                return loadXMLDOMByText(objXMLHTTP.responseText);
            }

			return objXMLHTTP.responseXML;
		} else {
			return null;
		}

function loadXMLDOMByText(xmlText){
    var xmlDOM =null;
    try //Internet Explorer
		  {
		  xmlDOM=new ActiveXObject("Microsoft.XMLDOM");
		   xmlDOM.async = false;
          xmlDOM.loadXML(xmlText);
		  }
		catch(e)
		  {
		  try //Firefox, Mozilla, Opera, etc.
		    {
		     xmlDOM=document.implementation.createDocument("","",null);
		     var parser=new DOMParser();
		     xmlDOM=parser.parseFromString(xmlText,"text/xml");
		    }
		  catch(e) { //alert(e.message)
		  
		  }
		  }
   
    return xmlDOM;
}

跨域问题:

  1.jsp 页面设置头  response.addHeader("P3P","CP=CAO PSA OUR"); 
  2.使用nginx 配置反向代理 

    nginx配置文件没有做带端口走   ,加入第四句代码即可 https://blog.csdn.net/chilai2005/article/details/100644345

  1. location / {  

  2. proxy_pass http://127.0.0.1:8080;  

  3. proxy_set_header X-Real-IP $remote_addr;  

  4. proxy_set_header Host $host:83; # 端口跟着走

  5. }  

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彳卸风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值