web开发中 代码解决部分IE兼容问题
首先是自己遇到问题:
一套系统,以前的开发asp旧+c#新后台管理扩展.完善后,在2013年前基本无问题,很是畅顺.
其中.到升级了浏览器后.例如ie9以后,则问题出现了.
如图:
这是一个js的计时器,平时正常显示.但这里不行了....没有显示出来.经过测试,在chrome上是可以正常的显示,ie9以上版本,360浏览器均不正常.
分析:
1\首先在chrome上是可以正常的显示,可以判断,逻辑上,应该是么有错的了.所以.我之前费了一大周章去折腾,真不科学!汗.....
2\查看对应的js倒计时文件,搜索一大堆资料.发现思考:判断浏览器是否支持跨域访问。 alert(jQuery.Support.Cors),IE8以下不支持,IE8返回false,google返回true。
所以,为了支持,在对应js 文件头中加入代码: jQuery.support.cors=true ;
特别说明:假如这里 编译运行提示: jquery.support.cors=true jquery未定义,则上网下载 jquery-1.10.2.min.js 这个文件库.并把代码<script language="javascript" src="jquery-1.10.2.min.js"></script> 库文件引用放在文件开头,即可解决未定义问题.
在 功能程序 定义前 设置jQuery.Support.Cors = true
在 功能程序 执行完毕之前 让其它button等触发事件暂停等待,可以理解为 "线程阻塞" 这里很重要,使程序正常运行 前提....
3\于是,就查了资料,考虑 IE 浏览器跨域问题?决定把系统站点"添加到安全站点"然后在ie安全性上开启两个:
跨域浏览窗口和框架,
通过域访问数据源.
可惜,故障依旧没有解决.
4\查看js的关键代码function MM_findObj(n, d)函数:这是DW自动生成的用来显示和隐藏层的方法。这一段也看得我头大....
function MM_showHideLayers() { //v3.0 var i,p,v,obj,args=MM_showHideLayers.arguments; for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2]; if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; } obj.visibility=v; } }
function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; }
MM_findObj函数主要作用:取得要复制的对象,并返回 1. if(!d) d=document;: 首先MM_findObj(n, d),有两个参数,而在两处用时,一处传了两个参数MM_findObj(n,d.layers[i].document),一处传了一个参数MM_findObj(ob)所以第一个if(!d) d=document;判断是否传了第二个参数d,如果没传第二个参数d,则!d为true,为d赋值文文件对象document 2. if((p=n.indexOf("?"))>0&&parent.frames.length) 用indexOf查找函数MM_findObj(n, d)的第一个参数n中?的位置(找不到?值为-1,找到?值为相应的位置),并赋给变量p,并判断这个位置是否大于0, parent.frames.length:父框架个数是否大于0 3. if(!(x=d[n])&&d.all) x=d.all[n]; 为变量x赋值d[n],如果不存在d[n]对象,且d.all存在,则为x赋值d.all[n] 4. for (i=0;!x&&i<d.forms.length;i++) x= d.forms[i][n]; d.forms.length:所传参数d对象的窗口个数,循环判断为x赋的值不存在时!x为真,且i< d.forms.length时,重新为x赋值d.forms[i][n] 5. for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); d.layers.length: 所传参数d对象的层个数,循环判断为x赋的值不存在时!x为真,且i< d.forms.length时,重新为x赋值递归调用自身函数MM_findObj的返回值 6. if(!x && document.getElementById) x= document.getElementById(n); document.getElementById: 所传参数d对象的对象id, 判断为x赋的值不存在时!x为真且所传参数d对象存在对象,则为x赋值document.getElementById(n)
5\好吧,问题来了.....MM_showHideLayers() 也就把这层显示出来.,,我想,问题的所在就是:这个隐藏的层不能显示出来.!!!!!!!!!!
6\找到一篇文章:"一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10",我就借鉴了里面的方法:
在源文件的<head>内加上这句
<meta http-equiv="X-UA-Compatible" content="IE=7"> //这句话的意思是强制使用IE7模式来解析网页代码以解决ie9以上的兼容性问题,ie9后,部分层的显示和交互失效,特此解决
在这里送上几种IE使用模式!
1、强制使用IE7模式来解析网页代码
<meta http-equiv=“X-UA-Compatible” content=“IE=8″>
2. Google Chrome Frame也可以让IE用上Chrome的引擎:
<meta http-equiv=“X-UA-Compatible” content=“chrome=1″ />
3.强制IE8使用IE7模式来解析
<meta http-equiv=“X-UA-Compatible” content=“IE=EmulateIE7″><!– IE7 mode –>
//或者 <meta http-equiv=“X-UA-Compatible” content=“IE=7″><!– IE7 mode –>
4.强制IE8使用IE6或IE5模式来解析
<meta http-equiv=“X-UA-Compatible” content=“IE=6″><!– IE6 mode –>
<meta http-equiv=“X-UA-Compatible” content=“IE=5″><!– IE5 mode –>
5.如果一个特定版本的IE支持所要求的兼容性模式多于一种,如:
<meta http-equiv=“X-UA-Compatible” content=“IE=5; IE=8″ />
好了。最后终于解决了。。。累了2年的时间,这个疑惑,2017--12月前终于解决。
web开发中 代码解决部分IE兼容问题的更多相关文章
- web开发中目录路径问题的解决
web开发当中,目录路径的书写是再常用不过了,一般情况下不会出什么问题,但是有些时候出现了问题却一直感到奇怪,所以这里记录一下,彻底解决web开发中路径的问题,开发分为前端和服务端,那么就从这两个方面 ...
- 彻底理解和解决移动WEB开发中CLICK点透问题
在移动WEB开发中,有时候可能会出现点透问题,本文将围绕这个TAP点透问题,详细的讲述到底什么是点透,为什么会出现点透,如何避免出现点透,如果不可避免的出现了,如何解决解决移动WEB开发中CLICK点 ...
- 一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10 2012-04-25 16:29:04| 分类: 学习 |字号 订阅 在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE ...
- WEB开发中的字符集和编码
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- [译]如何在Web开发中使用Python
[译]如何在Web开发中使用Python 原文:HOWTO Use Python in the Web 摘要 这篇文档展示了Python如何融入到web中.它介绍了几种Python结合web服务器的方 ...
- 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践
提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...
- Redis在WEB开发中的应用与实践
Redis在WEB开发中的应用与实践 一.Redis概述: Redis是一个功能强大.性能高效的开源数据结构服务器,Redis最典型的应用是NoSQL.但事实上Redis除了作为NoSQL数据库使用之 ...
- 移动Web 开发中的一些前端知识收集汇总
在开发DeveMobile 与EaseMobile 主题 的时候积累了一些移动Web 开发的前端知识,本着记录总结的目的,特写这篇文章备忘一下. 要说移动Web 开发与传统的PC 端开发,感觉也没什么 ...
- Web 开发中 9 个有用的提示和技巧
在本文中,我们给出 9 个有用的 HTML.CSS 和 JavaScript 的技巧和提示,可能在做 Web 开发中经常会需要用到的,其中有几个是关于 HTML5 和 CSS3 的,如果你是一个前端开 ...
随机推荐
- 通过java代码往mysql数据库中写入日期相关数据少13个小时
通过show variables like '%time_zone%'; 查看时区: CST 时区 名为 CST 的时区是一个很混乱的时区,有四种含义: 美国中部时间 Central Standard ...
- Autofac IOC框架
ASP.NET Core自带了一个轻量级的IOC容器 但是只提供了最基本的AddXXX方法来绑定实例关系 需要一个一个添加 可以使用其他IOC容器来替换内置的 ABP自带Castl ...
- clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop
clientHeight:包括padding但不包括border.水平滚动条.margin的元素的高度.对于inline的元素这个属性一直是0,单位px,只读元素. offsetHeight:包括pa ...
- python常用技巧
1,关于tab键与4个空格: 由于不同平台间,tab键值设置有所区别,据相关介绍,官方在缩进方面推荐使用4个空格.方便起见,可设置tab自动转换为4个空格. 1.1在pycharm中: 通过fi ...
- python爬虫采集网站数据
1.准备工作: 1.1安装requests: cmd >> pip install requests 1.2 安装lxml: cmd >> pip install lxml ...
- selenium 模拟拖动滚动条下拉
senium做自动化测试的过程中,有的页面需要下拉滚动条才能全部加载完成,否则加载不出来就定位不到想要的元素. 参考链接:http://www.cnblogs.com/landhu/p/5761794 ...
- eclipse运行项目,tomcat报错:Exception in thread :http-bio-8080-exec-4
eclipse运行项目,tomcat报错:Exception in thread :http-bio-8080-exec-4 转自 https://www.cnblogs.com/yby-blogs/ ...
- 同步请求和异步请求的区别,ajax异步请求如何理解
同步请求和异步请求的区别 先解释一下同步和异步的概念 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式. 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的 ...
- 记录下用axios遇到的问题
这两天用axios做页面登录.遇到了N多问题,.首先是报Response to preflight request doesn't pass access control check: No 'Acc ...
- PAT 1116 Come on! Let's C
1116 Come on! Let's C (20 分) "Let's C" is a popular and fun programming contest hosted b ...