靠谱的软件下载站
当前位置:  IEfans/IE专区/IE相关/MOSS 2007在IE8浏览器标准渲染模式下的bug及其修正

MOSS 2007在IE8浏览器标准渲染模式下的bug及其修正

IE相关 互联网 2010-07-20 阅读(760)
当在IE8浏览器中运行MOSS 2007的时候,发现会出现JS错误,并且不能通过点击缩略图切换浏览图片,而在IE6、IE7、IE8浏览器的其它模式下都没有问题。出现该错误的重要条件:自定义模板页声明使用了xhtml1-transitional.dtd或者更严格的文档类型;IE8标准渲染模式;以幻灯片视图查看图片库。在其他MOSS版本下还没有测试过。 IE浏览器给出的提示是: 网页错误详细信息 用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; WebSaver; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; MS-RTC LM 8 ) 时间戳: Thu, 3 Sep 2009 01:09:11 UTC 消息: 缺少对象 行: 1554 字符: 3 代码: 0 URI: http://portal.*****.com/_layouts/2052/imglib.js 错误原因: 在imglib.js中,function ClickFrame(frame)里有这么一句 var imgCur=document.getElementById('CurrentPic'); 用“右键,查看源代码”的方式在源代码里找不到字符串"CurrentPic",但是在IE8的开发人员工具里可以找到一个name为标记,猜测这个img是通过js创建,然后附加到DOM的。 问题就在这里,这个标记只有name="CurrentPic",没有id属性。而IE8标准渲染模式下,如果发现文档声明使用了xhtml1-transitional.dtd或者更严格的文档类型,document.getElementById(sName)是取不到只指定了name="sName",没有指定id="sName"的元素的。比如下面这个例子 此时点击图片会alert出null,如果把第一行的文档类型去掉,或者使用IE8的非标准渲染模式或IE6IE7,都会alert出[object HTMLImageElement]。 显然,MOSS的开发人员在这忘了给这个标记加上id属性,我觉得简单的解决办法是通过js给这个标记加上id属性即可。 我的做法是先准备一个小函数FixIdBug function FixIdBug(objName) { var objs = document.getElementsByName(objName); if (objs != null) { for(var i = 0; i < objs.length; i++) { if (objs[i].id == "") objs[i].id = objs[i].name; } } } 然后在页面中调用代码 var target = new Object(); target.FixIdBug = function(){FixIdBug("CurrentPic")}; if (window.addEventListener) window.addEventListener("load", target.FixIdBug, false); else window.attachEvent("onload", target.FixIdBug); 后记:这本来是将近一年前发现的一个小问题,当时就打算记到博客上的,后来一忙就忘了。今天整理资料时发现了,就存下来备忘吧。 文章来源:http://www.cnblogs.com/key/archive/2010/07/20/1781213.html

标签:IE相关IE8IE浏览器BUG渲染模式

Copyright © 1998-2017 www.iefans.net All Rights Reserved 湘ICP备13012168号-17