当前位置 > 首页 > Asp.net

ExtAspNet应用技巧(四) - 怪异的IE

2009-7-28 2:28:00来源:Asp.net

问题描述:
最近我一直被 ExtAspNet 中一个怪异的问题所困扰,有很多网友遇到这个问题:
http://www.cnblogs.com/sanshi/archive/2009/07/14/1523634.html?login=1#1593949
http://www.cnblogs.com/sanshi/archive/2009/07/14/1523634.html?login=1#1596122
http://extaspnet.codeplex.com/WorkItem/View.aspx?WorkItemId=5185
问题也很怪异,页面http://extasp.net/data/grid_iframe.aspx 中点击“编辑”,会弹出一个窗口,
窗口中加载一个IFrame页面,如下图所示:


但就是这个弹出窗口中的IFrame页面,很多网友反映第一次为空白,必须重新点击一次“编辑”才能显示IFrame页面。并且这个问题只在IE7下出现。
在Firefox,Chrome和IE8下都没这个问题。
我自己觉得更奇怪的是我新装的IE7居然没这个问题,反倒是Maxthon和IETester有这个问题。
=================================================================
解决思路:
1. 对比找到差异
我首先想到的是另外一个页面 http://extasp.net/iframe/grid_iframe.aspx 也有类似的弹出窗口的功能,但是就没有上述问题。于是我第一个做的就是
把两个页面的源代码拿来对比,看有哪些不一样。终于发现正确的页面ext:Window设置为 Target="_parent" (也就是说弹出窗口在父页面弹出),而出现问题
的页面的 ext:Window 的Target="_self" (也就是在本页面弹出窗口)。
虽然找到了出错的地方,但这不是根本的解决办法。

2. 页面寻找思路
还是回到页面,因为本机IE7下还是重现不了这个问题,只有Maxthon下才有,而Maxthon下貌似没有啥可用的开发工具(比如IEDeveloperToolbar,第一次用Maxthon不太了解),
只能眼睁睁的等着空白的页面:

对于开发人员来讲,这是一件多么痛苦的事情,没有一件可用的调试工具(即使给我一个Firebug的lite版本也行啊)。
不过,事情还不至于太糟糕,首先我想确定的是页面是不是已经加载了,在空白处点击 右键->"查看源代码" ,发现整个HTML都是对的,
为什么会不显示呢?然后我尝试 右键->"刷新",页面居然可能正常加载。 
郁闷。

3. 还是看看底层JS吧 
打开ExtAspNet\js\box\ExtAspNet-Window.js,找到设置弹出窗口中IFrame的地方:
// 创建或更新IFrame节点,同时更新panel实例中的自定义属性值
    box.wnd.updateIFrameNode = function(panel, iframeUrl) {
        
if (panel['box_property_iframe']) {
            
// 如果此Panel中包含有IFrame
            if (!panel['box_property_iframe_loaded']) {
                
// 如果此Panel中包含的IFrame还没有加载
                if (iframeUrl) {
                    panel[
'box_property_iframe_url'= iframeUrl;
                }
                panel[
'box_property_iframe_loaded'= true;
                panel.body.dom.innerHTML 
= _createIFrameHtml(panel['box_property_iframe_url'], panel['box_property_iframe_name']);
            }
            
else {
                
// 如果IFrame已经加载,则更新

  • Asp.Net MVC && SmartDAL项目实践(三) Cookie的简单利用

    2009-9-28 23:27:00

    摘要: 最近一直在忙这个小项目,总算忙完了第一版。从今天开始好好完善一下这个系列。 今天要说的就是利用Cookie简单的实现记住我功能。用户登录时可以选择记住我以此在用户机子上记录Cookie,下次

  • .net简谈分层架构思想(彻底分离每个层)——后补

    2011-5-4 13:30:00

    先给大家说声不好意思,在本人的 .net简谈分层架构思想(彻底分离每个层) 文章中由于缺乏示例代码,所以给大家理解带来不便,小弟先赔礼;这篇文章我补充所有实现彻底分层的全部代码。 彻底分层的好处

  • “反编译”【老赵谈IL系列】

    2009-12-29 12:16:00

    阅读: 1366 评论: 32 作者: 当耐特砖家 发表于 2009-12-29 08:30 原文链接 为什么要反编译【老赵谈IL系列】呢?因为我对老赵的观点基本上持赞成态度,斗胆在剖析和

  • [.NET] RDLC循环处理数据

    2012-7-19 14:31:00

    当我们在使用RDLC开发报表的时候,如果数据源内容如下。 private List<UserData> CreateDataSet(){ List<UserData&g

  • Screen Scraping in C#

    2009-10-15 13:17:00

    Recently I was asked by a friend of mine to screen scrape a website. What he wanted was the results

  • 简说Session(给不知道的人说的)

    2009-8-28 19:30:00

    摘要: * 说Session大家都知道也都用过(做asp.net我遇到过没用过Cookies的,还没遇到过没用过Session的),Session的保存方式默认是在内存中,更确切的说是在asp.ne

  • Silverlight网络寻奇 at 090417

    2009-4-17 12:30:00

    摘要: 阅读全文 -------------------------- 新闻: 冻结代码的Firefox 3.5 beta速度落后于Chrome 2和Safari 4 导航: 博客园首页

  • Updating MvcPager to work with ASP.NET MVC RC 1 (refresh)

    2009-2-2 3:05:00

    At first glance, upgrading to the RC1 was quite a debacle. First of all, any link that I created u

  • [叩响C#之门]第4章 流程控制 4.5.1 while语句

    2009-12-16 15:47:00

    阅读: 359 评论: 5 作者: 寒飞雨 发表于 2009-12-16 12:54 原文链接 全书总链接    发表评

  • 一个JS题目反映出你的JS的掌握程度

    2009-12-9 16:58:00

    阅读: 890 评论: 12 作者: 清茶 发表于 2009-12-09 14:08 原文链接 先不讲文章的主题是什么,大家先来做做这些题目,看你能做对多少。这也是反映了你对JS基础知识的