`
yiminghe
  • 浏览: 1461863 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

min-width For ie6 与传统事件阻止

阅读更多

引言

ie6 不支持 min-width 是很早的事情了,大都建议直接设置 width 吧,反正 ie6 会自动撑破容器,但是如果 min-width 的区域要根据浏览器自适应呢,或者其子区域要根据它来决定相对大小呢,单纯设置 width 不能解决问题。



场景

窗口内所有区域都是百分比宽度,根据窗口宽度自适应大小,但是窗口又不能太小,否则其内容会紧凑的看不清楚,那么对于支持min-width的就很简单了:

 

<style>
				body {
					//除了ie6 外的高级浏览器都认得
					min-width:1024px;	
				}
			</style>
 

但是对 ie6 就没什么好办法了,且body内区域都是百分比布局,一开始设定死width,那么整体就固定了。

 

解决方案:

 

还是只能用 width,但是我们可以动态的根据窗体大小来限制 body 的 width。

 

if(Ext.isIE6) {
                (function(){
                    (function ieMinWidth(){
                    		//当前窗口可见区域大小
                        var viewSize=Ext.getDoc().getViewSize();                    
                        Ext.getBody().setStyle({
                        		//最小1024
                            width:Math.max(viewSize.width,1024)+"px"
                        });                   
                    })();
                    //ie6 只有监控窗口大小改变
                    Ext.EventManager.onWindowResize(ieMinWidth);
                })();
            }

 

传统事件绑定的事件阻止

 

很多遗留代码用的是:

 

<a href="javascript:do();"></a>

 

 

现在要阻止 a 的事件(传播 + 默认行为) ,而原来的事件处理方法就不行了,而又想改动最小 ,根据ie下面事件统一在window.event ,而firefox在调用事件处理程序时会把事件作为第一个参数(即使 inline 绑定),那么可以改动最小的完成需求:

 

<a href="notfound.jsp" onclick="

				//标准浏览器会把事件作为第一个参数调用 onclick
				//ie 直接 取 window.event好了
				var e=arguments[0] || window.event;
				e=Ext.EventObject.setEvent(e);
				
				//something to do
				
				//即使在传统方式也可以阻止了,不能传播事件和默认行为
				e.stopEvent();
			
			"> traditional event way ,i am stoped when click </a>

 

 

 

 

全部测试代码:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
			<script src="ext-core-min.js"></script>
			<style>
				body {
					//除了ie6 外的高级浏览器都认得
					min-width:1024px;	
				}
			</style>
		</head>	
		<body>
			<h1>即使是 ie6 窗口宽度小于 1028 会出现滚动条的,哈哈哈</h1>
			
			
			<div style="border:1px solid red;width:50%">	即使是 ie6 我的宽度也始终是窗口宽度一半,除非窗口宽度小于 1028		</div>
			<a href="notfound.jsp" onclick="

				//标准浏览器会把事件作为第一个参数调用 onclick
				//ie 直接 取 window.event好了
				var e=arguments[0] || window.event;
				e=Ext.EventObject.setEvent(e);
				
				//something to do
				
				//即使在传统方式也可以阻止了,不能传播事件和默认行为
				e.stopEvent();
			
			"> traditional event way ,i am stoped when click </a>
			
			
			<script>
				Ext.onReady(function(){
					if(Ext.isIE6) {
                (function(){
                    (function ieMinWidth(){
                    		//当前窗口可见区域大小
                        var viewSize=Ext.getDoc().getViewSize();                    
                        Ext.getBody().setStyle({
                        		//最小1024
                            width:Math.max(viewSize.width,1024)+"px"
                        });                   
                    })();
                    //ie6 只有监控窗口大小改变
                    Ext.EventManager.onWindowResize(ieMinWidth);
                })();
            }
            
				});
			</script>
			
		</body>

</html>
 

 

 

 

 

 

 

1
0
分享到:
评论

相关推荐

    兼容IE6、IE7的min-width、max-width写法

    通过这些兼容性技巧,我们可以在不支持`min-width`和`max-width`的IE6和IE7浏览器中实现类似的功能。然而,需要注意的是,`expression`表达式在性能上较差,可能导致页面加载缓慢或者在某些情况下引起浏览器崩溃。...

    详解在table设置max-width以及min-width兼容问题和解决方案

    在table中设置min-width和max-width属性 &lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt; table{min-width:60%;min-width:100%;} 但是chrome不兼容max-width,ie7两者都不兼容。 解决方案:在table外层包一个div,在div上设置...

    多种方法解决min-width 不兼容ie6的问题

    总之,处理 min-width 与 IE6 不兼容的问题需要结合多种技巧和方法,同时考虑到浏览器的特殊性与项目的技术要求。随着现代浏览器的发展以及网页标准的完善,我们有理由相信未来网页开发中此类问题将会得到缓解,...

    让IE6支持min-width最小宽度

    标题中的“让IE6支持min-width最小宽度”指的是在Internet Explorer 6(简称IE6)浏览器中实现CSS的`min-width`属性。`min-width`属性允许开发者设置一个元素的最小宽度,确保它不会在屏幕或窗口尺寸缩小到一定程度...

    min-width最小宽度的作用介绍

    需要注意的是,当设置min-width属性时,可能会与max-width属性结合使用。max-width属性允许开发者定义元素的最大宽度,这样元素宽度在不超过最大宽度的前提下,会尽量达到设定的最小宽度。这种组合使用可以更精确地...

    让IE6支持min-width和max-width的方法

    minmax_props= new Array( new Array(‘min-width’, ‘minWidth’), new Array(‘max-width’, ‘maxWidth’), new Array(‘min-height’,’minHeight’), new Array(‘max-height’,’maxHeight’) ); // Binding...

    兼容IE6的min-width、min-height的简单方法

    IE6是一个非常老旧的浏览器版本,其对CSS的许多属性支持不全,比如本文提到的min-width和min-height属性。min-width属性可以设置元素的最小宽度,当浏览器窗口或者父元素的宽度小于设定值时,元素的宽度不会继续收缩...

    IE6不支持CSS中的min-width/height属性问题的解决方法

    然而,IE6对于min-width和min-height属性并不提供原生支持。在IE6中,若仅使用width或height属性,它会默认为元素提供一个最小尺寸的特性,但这种方式在其他现代浏览器中并不适用,比如在Firefox或IE7中,这样的设定...

    CSS属性探秘系列(五):min-width

    IE7及以上版本的浏览器支持min-width属性,但IE6不支持。因此,在IE6中,如果需要使用类似min-width的功能,可以通过JavaScript或者特定的CSS表达式来模拟。不过,随着IE6逐渐退出历史舞台,这种兼容性问题也越来越...

    04_盒子模型-内容-max-min-width.html

    04_盒子模型-内容-max-min-width

    让IE6支持兼容min-width、max-width CSS样式属性的方法

    总结来说,为了让IE6支持 `min-width` 和 `max-width`,我们需要利用IE6的私有属性 `_width` 结合JavaScript表达式进行处理。虽然这些技术在现代浏览器中已不再适用,但在维护旧项目或考虑兼容性时,了解这些方法...

    min-height和min-width两个最小高度和最小宽度兼容多浏览器版本

    文章介绍了min-height和min-width兼容多浏览器版本做法,有需要的同学可看看。min-height和min-width这两个最小高度和最小宽度的容器属性相信大家并不陌生。先说说min-height。这个看起来很容易。看下面试例: 复制...

    IE6支持max-width/height与min-width/height(完美解决方案)

    接下来,如果需要让IE6同时支持min-width和max-width属性,可以使用更复杂的JavaScript表达式。当元素的滚动宽度(scrollWidth)超出最大值时,可以将其设置为最大宽度,当滚动宽度小于最小值时,可以设置为最小宽度...

    IE 6不支持min-height或max-width等属性的完美解决方案

    坑人的IE6,不支持min-height,但是实际操作中,这个属性是非常需要的。那IE6下面怎么实现呢?请看geniusalien提供的完美解决方案: (geniusalien温馨提示:本文的min-height操作方式试用于min-width、max-width、...

    IE6实现min-width

    在早期的网页设计中,IE6(Internet Explorer 6)浏览器并不支持CSS的`min-width`属性,这给开发者带来了不少挑战,因为`min-width`属性对于创建响应式布局至关重要,它能确保元素的最小宽度,防止内容在窗口缩小时...

Global site tag (gtag.js) - Google Analytics