ie 纠结汇总

IE8中点击锚记,如果a标记的target不是_blank,且href不是#,则会触发window的onload和onbeforeunload.
也就是说--经常的写法href="javascript:void(0)"也是会触发事件,估计MS是被石头敲了。

------------------------------------------------------

onload事件问题:
下面的写法:
<script type="text/javascript">
function ops(){
var win = window.open('','_blank');
win.onload = function(){
alert('ok');
};
win.location.href = 'test.html';
}
</script>
</head>
<body>

<div class="bb" onclick="ops();">
圆角三边 这里是内容
</div>

</body>

火狐里面是可以alert的,但是ie8就不行。
解决办法是子窗体调父窗体的方法模拟回调。(IE真是让人纠结。)

另外的:

window的onload事件比较容易触发不了,往往出现在初始化页面时此时你认为还没有onload但是

document.readyState 已经是 "complete"了,所以此时添加的onload事件不会触发。
-----------------------------------------------------------------
Ie8 window.open函数指定 location=no status=no 不起作用的原因是:ie8安全设置里需要加入站点为可信任站点,这种前提下,location=no status=no才会起作用。
----------------------------------------------------------------
默认div overflow-y:auto时,当出现滚动条时,用户想要选择文字,他向上滚动滚动条也应该滚动,但是如果设置了overflow-x:hidden,ie就白痴的不滚动了,FF下面是滚动的。
------------------------------------------------------------
window 的onblur事件:当这个窗口的某个元素获得焦点时,竟然也会触发window的onblur事件。(不一定是所有的情况会出现这个问题,具体那种情况下会出现这个问题还不知道)做chat时窗口消息提示出现问题就是这个原因,还好ie特别的有document的onfocusin 和onfocus out事件可以替代,因为页面元素获得焦点不会触发document的onblur事件[也可能是触发,但是最终也会触发 onfocusin,:onfocusout->onfocusin]
------------------------------------------------------------
在unbeforeload 和 ununload事件里发送ajax请求的话,ie会无法传送post值,解决办法是使用header来传参,但是header有大小限制,数据量太大的话就不会被服务器接收。也可使用ajax的同步请求来解决。使用new Image().src的方式也可以,但感觉不是很稳定。

------------------------------------------------------------

IE TEXTAREA javascript换行问题:

IE TEXTAREA javascript换行 txt.value+='\r\n';光标会显示没有换行(其实已经换行了),FF,chrome是好的,ie(6,7,8)有此bug,解决方案:将event.keyCode = 13让文本换行。

--------------------------------------------------------------------

ie 下的checkbox点击总觉得怪怪的,有时明明点了却没效果。

如果要将某个元素disable掉,el.disabled = true;这样写到是没问题。

但是要将原来disabled 的元素enable的话,el.disabled = false; 在IE下就有点怪了,有时可以有时又不行。

解决方法是删除掉disabled 属性 el.removeAttribute('disabled');

-----------------------------------------------------------------

scrollLeft

一般ie还是支持这个的,有的版本(ie7beta)

在面顶部声明为: DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd"> 就会有问题.

但是往往在你加载页面时得到的scrollLeft为0,要等到页面全部初始化好后才能得到正确的值。

--------------------------------------------------------------------

ie6 option selected属性问题:

ie6下设置option的selected属性会导致脚本错误:option.selected = true;//error

解决办法:option.setAttribute('selected', true); //work

-----------------------------------------------------------------------------------

其实IE对于非表单物件一样可以用getElementsByName,只不过要求那个element 的Name和Id 都存在并且相同. 否则就取不到。

<div id="spn" name="spn">...</div>
<div id="spn" name="spn">...</div>

------------------------------------------------------------------------------------

title换行,这个只有IE可以,使用&#13;来代表换行

但是用包含这个字符的html使用extjs模板会导致非IE浏览器下模板编译错误!

---------------------------------------------------------------------------

对于下面的html:

<div id="content">
  	<div class="line">
    <div id="c1" class="ct"><div id="holder1" class="holder">1</div></div>
    <div id="c2" class="ct"><div id="holder2" class="holder">2</div></div>
    </div>
    </div>

想让div#c1,div#c2横向排列,如果这样写:

.ct{
	float: left;
}

ok,那是没问题的。

但是如果这样写:

.line>div{
	float: left;
}

你会发现c1,c2仍然换行了。这个问题只有ie才有。




Total views.

© 2013 - 2024. All rights reserved.

Powered by Hydejack v6.6.1