IE6的兼容性问题

mizuho_2006 2012-10-19 03:28:19
下载了一个JQuery登陆框的插件,但是在IE6下不兼容(直接用作者提供的demo也不行)

下面是我做的网站
在firefox,IE8,IE9下测试效果图,正常情况下整个页面背景变暗,在页面居中显示登录div


IE6下测试效果图,页面背景没有变暗,而且DIV显示在了页面底部靠左侧(隐藏时的DIV是在页面底部居中放置的)




主要有关的CSS代码如下

#signup {

width: 470px;
padding-bottom: 2px;

display:none;


background: #FFF;
border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px;
box-shadow: 0px 0px 4px rgba(0,0,0,0.7); -webkit-box-shadow: 0 0 4px rgba(0,0,0,0.7); -moz-box-shadow: 0 0px 4px rgba(0,0,0,0.7);

}


jQyery代码如下

(function($){
$.fn.extend({leanModal:function(_1){
var _2={top:100,overlay:0.5};
_1=$.extend(_2,_1);
return this.each(function(){
var o=_1;$(this).click(function(e){
var _3=$("<div id='lean_overlay'></div>");
var _4=$(this).attr("href");
$("body").append(_3);
$("#lean_overlay").click(function(){_5(_4);});
var _6=$(_4).outerHeight();
var _7=$(_4).outerWidth();

$("#lean_overlay").css({"display":"block",opacity:0});
$("#lean_overlay").fadeTo(200,o.overlay);
$(_4).css({"display":"block","position":"fixed",opacity:0,"z-index":11000,"left":50+"%","margin-left":-(_7/2)+"px","top":o.top+"px"});
$(_4).fadeTo(200,1);e.preventDefault();});});

function _5(_8){$("#lean_overlay").fadeOut(200);$(_8).css({"display":"none"});};}});})(jQuery);


我把JQuery代码里涉及div显示样式的部分加上"_left":"50%"后仍然不起作用。是样式不兼容还是脚本不兼容呢?
为什么好看的效果在IE6下好多都不能用。。。
...全文
396 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2012-10-24
  • 打赏
  • 举报
回复
黑屏可能是ie浏览器安全设置的问题,没有启用“2进制和脚本行为”,这样滤镜没有效果的

IETest只是一个工具,并没完全实现了真正的IE6的功能,有些脚本在ietest报错,但是在实际的ie6中是可以运行的。

所以测试的时候找ie6来测试
mizuho_2006 2012-10-24
  • 打赏
  • 举报
回复
我用的是IETester测试的,alert navigator.userAgent输出就是msie 6.0
mizuho_2006 2012-10-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
没改样式,我这里测试都可以的。有个问题是ie6可能是navigator.userAgent并不一定输出就是msie 6.0[/Quote]

大神,是不是还和系统有关系啊
我在单位用的是WIN7系统,用您的测试例子结果就显示不正常,IE6黑屏
但是在家用的是XP系统,用您的例子显示是正常的。。
mizuho_2006 2012-10-24
  • 打赏
  • 举报
回复
嗯,感谢大神指点。
ms 2012-10-23
  • 打赏
  • 举报
回复
IE6丰盛的时代本来就没那么多效果,如果为了效果而去匹配旧式浏览器,我觉得划不来。
losenetway 2012-10-23
  • 打赏
  • 举报
回复
唉,别支持算了
mingfish2 2012-10-23
  • 打赏
  • 举报
回复
ie6不支持fixed
Go 旅城通票 2012-10-23
  • 打赏
  • 举报
回复
没改样式,我这里测试都可以的。有个问题是ie6可能是navigator.userAgent并不一定输出就是msie 6.0这种,可能会是msie 7。你alert看下navigator.userAgent是不是包含msie 6

测试代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<style>
#lean_overlay { position: fixed; z-index: 10000; top: 0px; left: 0px; height:100%; width:100%; background: #000; display: none; }
</style>
<script type="text/javascript" src="http://www.lvzhou168.com/js/jquery.js"></script>
<script>
(function ($) {
$.fn.extend({ leanModal: function (_1) {
var _2 = { top: 100, overlay: 0.5 }
, css1 = document.compatMode == 'CSS1Compat'
, ie6 = /msie 6/i.test(navigator.userAgent) || (!!document.all && !css1)//IE7+文档说明不是xhtml的也不支持fixed属性,只能按照ie6的方法来处理
;
_1 = $.extend(_2, _1);
return this.each(function () {
var o = _1; $(this).click(function (e) {
var _3 = $('#lean_overlay');
if (_3.size() == 0) {//修正点击多次重复添加背景
_3 = $("<div id='lean_overlay'></div>");
$("body").append(_3);
_3.click(function () { _5(_4); });
}
var _4 = $(this).attr("href");
var _6 = $(_4).outerHeight();
var _7 = $(_4).outerWidth();
_3.css({ "display": "block", opacity: 0 });
_3.fadeTo(200, o.overlay);
if (ie6) { //IE6设置width 100%,height:100%在CSS1Compat下好像么有用,直接设置为根节点的滚动高和宽得了
_3.css({ position: 'absolute', height: document[css1 ? 'documentElement' : 'body'].scrollHeight, width: document[css1 ? 'documentElement' : 'body'].scrollWidth });
//修正IE6滚动问题
$(window).scroll(function () { $(_4).css({ top: document[css1 ? 'documentElement' : 'body'].scrollTop + o.top }); });
}
$(_4).css({ "display": "block", "position": ie6 ? 'absolute' : "fixed", opacity: 100, "z-index": 11000, "left": 50 + "%", "margin-left": -(_7 / 2) + "px", "top": o.top + "px" });
$(_4).fadeTo(200, 1); e.preventDefault();
});
});

function _5(_8) { $("#lean_overlay").fadeOut(200); $(_8).css({ "display": "none" }); };
}

});
})(jQuery);

$(function () {
$('input[href]').leanModal();
});
</script>
<input type="button" href="#abc" value="打开登陆框"/>
<div style="height:1000px;"></div>
<div style="width:300px;height:200px;border:solid 1px black;display:none;background:#fff" id="abc">登陆框</div>
mizuho_2006 2012-10-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
引用 9 楼 的回复:
[/Quote]

您好大神,我按新的脚本运行的时候,IE6下一点“登录”整个屏幕都黑了。IE7下是整个屏幕(包括登录div)都变暗了。IE8,IE9和火狐都是正常的。CSS样式表不需要修改吗?
bjb05 2012-10-22
  • 打赏
  • 举报
回复
好强啊,这些都懂
[Quote=引用 4 楼 的回复:]

"display":"block","position":"fixed",opacity:0,"z-index":11000,"left":50+"%","margin-left":


IE6不支持fixed属性,你需要判断下是不是IE6,是的话设置为absolute

$(_4).css({"display":"block","position":/msie 6/i.test(na……
[/Quote]
Go 旅城通票 2012-10-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

CSS code

#lean_overlay {
position: fixed;
z-index: 10000;
top: 0px;
left: 0px;
height:100%;
width:100%;
background: #000;
display: none;
}



我把fixed换成/msie 6/i.te……
[/Quote]
这个肯定不行了,css又不支持脚本【ie除外,有expression】

这个插件也有bug,基本上按照w3c标准来写的,没有加兼容IE的判断,按照backcompat渲染的时候IE7,Ie8也不支持fixed,IE9没有,不知道是否直接支持fixed了。大概修改了下
   (function ($) {
$.fn.extend({ leanModal: function (_1) {
var _2 = { top: 100, overlay: 0.5 }
, css1 = document.compatMode == 'CSS1Compat'
, ie6 = /msie 6/i.test(navigator.userAgent) || (!!document.all && !css1)//IE7+文档说明不是xhtml的也不支持fixed属性,只能按照ie6的方法来处理
;
_1 = $.extend(_2, _1);
return this.each(function () {
var o = _1; $(this).click(function (e) {
var _3 = $('#lean_overlay');
if (_3.size() == 0) {//修正点击多次重复添加背景
_3 = $("<div id='lean_overlay'></div>");
$("body").append(_3);
_3.click(function () { _5(_4); });
}
var _4 = $(this).attr("href");
var _6 = $(_4).outerHeight();
var _7 = $(_4).outerWidth();
_3.css({ "display": "block", opacity: 0 });
_3.fadeTo(200, o.overlay);
if (ie6) { //IE6设置width 100%,height:100%在CSS1Compat下好像么有用,直接设置为根节点的滚动高和宽得了
_3.css({ position: 'absolute', height: document[css1 ? 'documentElement' : 'body'].scrollHeight, width: document[css1 ? 'documentElement' : 'body'].scrollWidth });
//修正IE6滚动问题
$(window).scroll(function () { $(_4).css({ top: document[css1 ? 'documentElement' : 'body'].scrollTop + o.top }); });
}
$(_4).css({ "display": "block", "position": ie6 ? 'absolute' : "fixed", opacity: 100, "z-index": 11000, "left": 50 + "%", "margin-left": -(_7 / 2) + "px", "top": o.top + "px" });
$(_4).fadeTo(200, 1); e.preventDefault();
});
});

function _5(_8) { $("#lean_overlay").fadeOut(200); $(_8).css({ "display": "none" }); };
}

});
})(jQuery);
泡泡鱼_ 2012-10-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
对不起昨天出去玩回复晚了。
谢谢showbo前辈,问题已经解决一半了。

还有IE6下点击登录系统后背景色不会变暗,能不能解决呢?
其他浏览器都是点击除了登录界面之外的地方就会自动隐藏div,但是IE6下没有效果,div不会隐藏,这个又怎么解决呀。
[/Quote]

这应该是事件处理的时候哪里出了问题吧。没看到你具体的代码,只能靠猜的了。找找类似于
document.onclick
或者
$(window).click(function(){})//如果看到这个,就把window改成document
或者
$(document).click(function(){})
Go 旅城通票 2012-10-21
  • 打赏
  • 举报
回复
背景lean_overlay的样式贴出来,css有问题吧
mizuho_2006 2012-10-21
  • 打赏
  • 举报
回复
对不起昨天出去玩回复晚了。
谢谢showbo前辈,问题已经解决一半了。

还有IE6下点击登录系统后背景色不会变暗,能不能解决呢?
其他浏览器都是点击除了登录界面之外的地方就会自动隐藏div,但是IE6下没有效果,div不会隐藏,这个又怎么解决呀。
mizuho_2006 2012-10-21
  • 打赏
  • 举报
回复

#lean_overlay {
position: fixed;
z-index: 10000;
top: 0px;
left: 0px;
height:100%;
width:100%;
background: #000;
display: none;
}


我把fixed换成/msie 6/i.test(navigator.userAgent)?"absolute":"fixed"在所有浏览器下都不管用了
可能只有在jQuery下才能这么用吧。。
泡泡鱼_ 2012-10-19
  • 打赏
  • 举报
回复
万恶的IE6,我现在已经不兼容它了
Go 旅城通票 2012-10-19
  • 打赏
  • 举报
回复
"display":"block","position":"fixed",opacity:0,"z-index":11000,"left":50+"%","margin-left":


IE6不支持fixed属性,你需要判断下是不是IE6,是的话设置为absolute

$(_4).css({"display":"block","position":/msie 6/i.test(navigator.userAgent)?"absolute":"fixed",opacity:0,"z-index":11000,"left":50+"%","margin-left":-(_7/2)+"px","top":o.top+"px"});
mizuho_2006 2012-10-19
  • 打赏
  • 举报
回复
是啊。。头疼的IE6。。难到因为一个IE6就要放弃这么多好看的效果吗。。
a8509190 2012-10-19
  • 打赏
  • 举报
回复
这个兼容问题最麻烦了
mizuho_2006 2012-10-19
  • 打赏
  • 举报
回复
图片有些大,所以第一张看起来登陆框不是居中的,其实是图片没有显示完整。
1. HTML对象获取问题 3 2. const问题 3 3. event.x与event.y问题 3 4. window.location.href问题 3 5. frame问题 3 6. 模态和非模态窗口问题 3 7. firefox与IE的父元素(parentElement)的区别 3 8. document.formName.item(”itemName”) 问题 3 9. 集合类对象问题 3 10. 自定义属性问题 3 11. input.type属性问题 3 12. event.srcElement问题 3 13. body载入问题 3 14. 事件委托方法 3 15. Table操作问题 3 16. 对象宽高赋值问题 3 Ø CSS 3 1. cursor:hand VS cursor:pointer 3 2. innerText在IE中能正常工作,但在FireFox中却不行. 3 3. CSS透明 3 4. css中的width和padding 3 5. FF和IE BOX模型解释不一致导致相差2px 3 6. IE5 和IE6的BOX解释不一致 3 7. ul和ol列表缩进问题 3 8. 元素水平居中问题 3 9. Div的垂直居中问题 3 10. margin加倍的问题 3 11. IE与宽度和高度的问题 3 12. 页面的最小宽度 3 13. DIV浮动IE文本产生3象素的bug 3 14. IE捉迷藏的问题 3 15. float的div闭合;清除浮动;自适应高度 3 16. 高度不适应 3 17. IE6下图片下有空隙产生 3 18. 对齐文本与文本输入框 3 19. LI中内容超过长度后以省略号显示 3 20. 为什么web标准中IE无法设置滚动条颜色了 3 21. 为什么无法定义1px左右高度的容器 3 22. 链接(a标签)的边框与背景 3 23. 超链接访问过后hover样式就不出现的问题 3 24. FORM标签 3 25. 属性选择器(这个不能算是兼容,是隐藏css的一个bug) 3 26. 为什么FF下文本无法撑开容器的高度 3
经常使用电脑可能也遇到过了! 突然‘咚’的一声 提示 内存不能为read 这个问题我以前也遇到过不知道怎么解决 现在终于有办法了!呵呵! 我们就看看是什么原因引起的吧,另外附送一个小工具修复见下面附件 总结下大概以下9个原因 1、驱动不稳定,与系统不兼容,这最容易出现内存不能为 Read 或者文件保护(主要原因) 2、系统安装了一个或者多个流氓软件,这出现 IE 或者系统崩溃的机会也比较大,也有可能出现文件保护 3、系统加载的程序或者系统正在运行的程序之前有冲突,尤其是部分杀毒软件监控程序 4、系统本身存在漏洞,导致容易受到网络攻击。 5、病毒问题也是主要导致内存不能为 Read、文件保护、Explorer.exe 错误…… 6、如果在玩游戏时候出现内存不能为 Read,则很大可能是显卡驱动不适合(这里的不适合有不适合该游戏、不适合电脑的显卡)也有可能是 系统版本不够新或者不符合该游戏、显卡驱动 7、部分软件本身自身不足的问题 8、电脑硬件过热,也是导致内存不能为 Read 的原因之一。 9、电脑内存与主板兼容性不好也是导致内存不能为 Read 的致命原因! 以上大概就是目前可以引起系统提示 内存不能为read的原因了 另外软件是针对只是针对部分原因引起的内存不为read所做修复,不是100%有效,大家可以试试看 说下原理: 就是批处理使用 regsvr32命令 将动态链接库文件重新注册 (system32下的所有 .dll 和 .ocx 文件;) 注意:由于修复工具会重新注册 system32下的所有 .dll 和 .ocx 文件 此操作对杀毒软件来说属于敏感操作,所以建议使用修复工具的时候,请禁用杀毒软件,以免部分杀毒误报!jie

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧