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 的,如果你是一个前端开 ...
随机推荐
- 小程序App.js 传递数据给实例(app异步数据问题)
在最开始初始化的时候,都会触发app.js 这个里面的onload生命方法, 在这个方法里面我们可以获取之前的存储数据/异步请求等等操作, 但是这些操作一般都是需要稍许时间.也就是说在其他界面加载结束 ...
- CSS实现水平垂直居中的1010种方式
转载自:CSS实现水平垂直居中的1010种方式 划重点,这是一道面试必考题,很多面试官都喜欢问这个问题,我就被问过好几次了 要实现上图的效果看似很简单,实则暗藏玄机,本文总结了一下CSS实现水平垂直居 ...
- 自定义 Cordova插件(基础篇)
cordova自定义插件 注意:存放自定义cordova插件目录不能有空格可能会报错 cordova的安装 下载node.js,安装完成后你可以在命令行中使用node和npm. 安装cordova使用 ...
- webpack学习笔记 (二) html-webpack-plugin使用
这个插件的两个作用: 为html文件中引入的外部资源如script.link动态添加每次compile后的hash,防止引用缓存的外部文件问题 可以生成创建html入口文件,比如单页面可以生成一个ht ...
- 【设计模式】抽象工厂模式(Abstract Factory Pattern)
[前言] 上次针对自己的理解书写一篇工厂模式的文章,后面对于工厂模式进行更加多的学习,于是了解到了抽象工厂模式.其实网上大多数人们都是抽象工厂模式是工厂模式的升级版本,虽然我并不知道所说的升级是什么意 ...
- NetSec2019 20165327 Exp1 PC平台逆向破解
NetSec2019 20165327 Exp1 PC平台逆向破解 一.实践目标 本次实践的对象是一个名为pwn1(实验中用的 是5327pwnx)的linux可执行文件. 该程序正常执行流程是:ma ...
- f-stack nginx多进程报错 primary worker process failed to initialize
EAL: Detected 4 lcore(s)EAL: Detected 1 NUMA nodesEAL: Multi-process socket /var/run/dpdk/rte/mp_soc ...
- Vue-CLI3.0版本配置BootStrap的方法
一.引入jquery bootstrap popper 用 cnpm install jquery bootstrap@3 popper.js --save 用cnpm 来导入 用npm会出 ...
- jdbc、jpa、spring data jpa、hibernate、mybatis之间的关系及区别
基础概念 jdbc(Java DataBase Connectivity)是java连接数据库操作的原生接口.JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型.作为A ...
- docker 部署nginx
# 下载镜像 docker pull nginx # 挂载 文件 和文件夹必须存在 docker run -p 80:80 --name mynginx -v $PWD/www:/www -v $P ...