`
clue
  • 浏览: 30428 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

IE sucks... 由document.namespaces引发的脚本错误

    博客分类:
  • web
阅读更多
IE总能给我们带来“惊喜”,做前端开发近2年,碰到过不少郁闷得要死的IE专属bug。

这次又发现一个,十分诡异:

系统基于ExtJs开发,动态加载各页面JS。
症状是,IE下页面JS加载过来后有很大几率执行异常,由于是动态加载的,无法进行调试。
而换成静态加载又一切正常
嗯。。。当然,其它浏览器一切正常


经过数次尝试,最终终于利用带defer属性的script标签静态加载,重现出了这个错误。
出错的语句是这行:
Js代码
if (!doc.namespaces[prefix]) { 

经测试,只要访问doc.namespaces就会报异常
(这是excanvas的代码)

诡异的地方来了,以下代码会报错
<script defer="true">  
    alert(document.namespaces);  
</script>  


以下代码正常
<script>  
    alert(document.namespaces);  
</script>  


以下代码也正常
<script>  
window.onload = function(){ alert(document.namespaces);};  
</script>  


以下代码也正常。。。。。。

<script>  
    document.namespaces;  
</script>  
<script defer="true">  
    alert(document.namespaces);  
</script>


像是。。。访问过一次就不会出错了
如果从没访问过,那么在静态代码执行后,onload触发前访问就会出错。

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

很好。。。之前发在论坛,只因为后面有一句“有没有人碰到过同样的问题?”就被移到问答频道,博客上的也被删了

嘛。。。重发
分享到:
评论
2 楼 clue 2011-08-05  
小鸡啄米 写道
貌似我也碰到了这样的问题,情况是这样的,为了在IE6里面兼容PNG24半透明,因为产品用到了大量的这类图片,为了方便采用了DD_beletedpng 这个库,好像每次第一次访问的时候就会出错,刷新后就是正常的,后来就查看到一document.namespaces 一会是object  一会是unknown 搞得很头疼,请问你后来怎么解决这个问题的啊?

我们是在特定的情况下才会出现此问题
用的是OPOA模式,整个框架比较大,通常是会在数个ajax请求取得初始化数据后才加载JS文件的,通常这里会等待接近半秒,onload已经触发过,所以不会有问题。
那次是开发版,没有进行初始化就加载了,当加载速度够快就会出问题。(Ext的onReady是早于onload的)

文中我有写当时测试中发现的方法,即事先访问一次document.namespaces(将这段JS代码写到head中)

对了,你引用的库是开启了defer吗?照道理不应该有问题的
1 楼 小鸡啄米 2011-08-05  
貌似我也碰到了这样的问题,情况是这样的,为了在IE6里面兼容PNG24半透明,因为产品用到了大量的这类图片,为了方便采用了DD_beletedpng 这个库,好像每次第一次访问的时候就会出错,刷新后就是正常的,后来就查看到一document.namespaces 一会是object  一会是unknown 搞得很头疼,请问你后来怎么解决这个问题的啊?

相关推荐

    itsucks-0.4.1.zip

    【itsucks-0.4.1.zip】是一个包含开源Java Web Spider项目的压缩包,这个项目被称为itSucks。itSucks的设计目标是帮助用户轻松构建网络爬虫,它使用了Web机器人技术,允许用户通过定义下载规则来抓取网页内容。项目...

    IE吸盘「IE Sucks」-crx插件

    使用IE Sucks插件庆祝淘汰前的最后几天。 每当遇到旨在帮助Internet Explorer像老人一样上楼的代码时,我们都会像过去一样发出经典的IE信息栏。 您知道,这意味着您只有更多无用的废话可以破坏您的浏览器,除非这次...

    IE Sucks-crx插件

    IE SUCKS这么糟糕,实际上是有趣的观看失败! IE样式信息条在页面中的障碍码时发光。 无广告! Internet Explorer是一个浏览器的F ****笑话,并字面上持有进步! 在逐步淘汰之前庆祝最终几天,用IE吸收插件。 每当...

    Why.Software.Sucks

    Any book is the product of a team effort. In this one, I've had an out- standing supporting cast. Everyone at Addison-Wesley understood and got behind the concept of a book for the users of ...

    itsucks-0.4.1开源爬虫

    【itsucks-0.4.1开源爬虫】是一个针对初学者友好的网络爬虫工具,它的出现使得没有编程背景的用户也能轻松进行数据抓取。这个最新版本的itsucks,不仅提供了完整的爬虫功能,还引入了一个简洁的图形化用户界面(GUI...

    itsucks开源代码

    爬虫源码,开源 java 很好 强大 可扩展

    kevingreen.sucks

    在互联网上,".sucks" 域名通常被用来创建一个平台,让人们可以公开讨论他们认为有问题的事物,这种做法在公众人物、品牌或事件引发争议时尤为常见。"kevingreen.sucks" 很可能是针对名为 Kevin Green 的某个人,...

    wtf.zip_it

    描述中的“IE sucks =) You should see it )) ”暗示了讨论的主题可能涉及到Internet Explorer(IE)浏览器,用户对它持批评态度,可能因为其已知的性能问题、安全漏洞或不支持现代Web标准。 标签“it”进一步确认...

    episode-parser:一种JavaScript实用程序,用于解析有时用于电视节目的格式的文件名

    它将诸如Fake.Blood.2013.S07E06.Karma.Sucks.PROPER.720p.HDTV.x264-STALKERS.srt这样的文件名解析为具有以下可能属性的对象: show ,string: show名称, 'Fake Blood' 。 year ,整数:发布年份, 2013 。 ...

    大师品软件_Why Software Sucks

    《大师品软件_Why Software Sucks》是一本深入探讨软件设计缺陷和用户体验问题的书籍,由David S. Platt撰写。这本书旨在揭示为什么某些软件在使用过程中让人感到困扰,并提出改善软件设计的策略。作者Platt是一位...

    learnjava:学习AP CS-A考试

    learnjava 个人学习AP Computer Science A 的 Repository AP的CS A考试其实比较简单,5分还是很容易拿到的,如果你已经有OOP基础只需要学习简单的java语法即可....正如我在代码里写的那样 The book sucks...

    信息安全_数据安全_Why_the_role_of_CISO_sucks_and_w.pdf

    信息安全_数据安全_Why_the_role_of_CISO_sucks_and_w 信息安全研究 金融安全 安全人才 安全对抗 法律法规

    大学英语语法教程句子结构PPT学习教案.pptx

    例如,"Grammar sucks.","sucks"是不及物动词,表明对"Grammar"的态度。 3. **主语+及物动词+宾语 (SVO)**:动词需要一个宾语来完成其动作。例如,"I hate grammar.","hate"是及物动词,"grammar"是宾语,表明了...

    Atc Sucks-crx插件

    Atc_Sucks.crx就是这个插件的源代码打包文件,用户可以通过将该文件拖放到浏览器的扩展管理页面来安装它。 在描述中提到的“ATC很烂”,这可能是由于ATC在性能、用户体验、隐私保护或兼容性方面存在不足。开发这样...

    DailyUIchallenge_quartitine_sucks:我参加了由dailyui.co组织的每日ui挑战

    DailyUIchallenge_quartitine_sucks 我参加了由dailyui.co组织的日常ui挑战,在这里我每天都使用Adobe XD软件设计UI。 设计问题由上述网站邮寄。 而且我必须在dribble.com上上传

    英语句子结构分析.doc

    简单句通常有三个基本形式:主语+及物动词+宾语(例如:I hate grammar.),主语+不及物动词(例如:Grammar sucks.),以及主语+系动词+表语(例如:Grammar is hell.)。识别句子中的主语、谓语和宾语(如果存在)...

    ps4_module_loader:PS4模块加载程序IDA 7.0-7.5

    aerosoul balika011 Znullptr Pablo (kozarovv) ChendoChap xyz CelesteBlue kiwidogg motoharu noname120 flatz Team Reswitched Extra Special Thanks for telling me my program sucks... ...

    Cmdswitch2-Ecovacs:一个将您的Ecovacs vacuum集成到Homekit的Python脚本

    一个将您的Ecovacs vacuum集成到Homekit的Python脚本。 要求 该脚本假定您已安装以下组件: 安装 在Python脚本中输入您的Ecovacs凭据 在config.json文件中以state_cmd的身份运行脚本。 配置示例 "platforms": [{ ...

    why-your-test-suite-sucks

    标题“why-your-test-suite-sucks”暗示了我们讨论的主题是关于测试套件存在的问题以及如何改进它们。测试套件是软件开发过程中的重要组成部分,它确保代码的质量、稳定性和可靠性。然而,当测试套件出现问题时,...

Global site tag (gtag.js) - Google Analytics