以下是download_tree.js的代码:
/*
 * Ext JS Library 2.1
 * Copyright(c) 2006-2008, Ext JS, LLC.
 * [email protected]
 * 
 * http://extjs.com/license
 */Ext.onReady(function(){
    // shorthand
    var Tree = Ext.tree;
    function fun(node){
        if(node.leaf==true){
        var frame = parent.document.getElementById("mainFrame");
        frame.src=url_root+'/archive/DownloadDoc.a?selectInfo&cid='+node.id;
     }
    }
    var tree = new Tree.TreePanel({
        el:'tree-div',
        useArrows:false,
        autoScroll:true,
        rootVisible:false,
        animate:true,
        //enableDD:true,
        containerScroll: false,
        baseCls:'', 
        listeners:{click:fun},
        loader: new Tree.TreeLoader({
            dataUrl:url_root+'/ClassTreeAction.a?queryTreeNode'
        })
    });    // set the root node
    var root = new Tree.AsyncTreeNode({
        text: 'Ext js',
        draggable:false,
        id:'source'
    });
    tree.setRootNode(root);
//    tree.setRootVisible(false);    // render the tree
    tree.render();
   // root.expand();
});运行后提示:
网页错误详细信息用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152)
时间戳: Wed, 26 Dec 2012 06:18:54 UTC
消息: 'null' 为空或不是对象
行: 16
字符: 9
代码: 0
URI: http://192.168.1.121/qasss/archive/download_tree.js我现在用的是IE8,原来用IE6的时候似乎没这个问题。我现在不知道怎么改才能适应IE8,高手帮我看看,怎么修改合适?感谢!

解决方案 »

  1.   

    不熟悉ext,只懂js和Jquery。
    你发错版块了
      

  2.   

    var frame = parent.document.getElementById("mainFrame");
    frame.src=url_root+'/archive/DownloadDoc.a?selectInfo&cid='+node.id;你页面不存在mainFrame这个ID的控件吧
      

  3.   

    在IE6下没问题,到了IE8才这样。版主,您是说引用这个js里面没有这个mainFrame?
      

  4.   

    var frame = parent.document.getElementById("mainFrame");
    改成 var frame = getIFrameDOM("mainFrame");试试
      

  5.   


    getIFrameDOM为自定义函数?
      

  6.   

    单步调试一下看看是那个对象为null parent ?
    frame ?
      

  7.   

    不是自定义的函数啊。如果还不行,试试下面的:
    var frame = parent.getIFrameDOM("mainFrame");
      

  8.   

    url_root是什么?怎么没看到楼主定义这个变量?
      

  9.   


    在一个它的上级download_classtree.jsp文件中这样定义的:
    <script>
    var url_root="${ctx}";
    </script>
      

  10.   

    我的亲娘啊,我终于找到问题的原因,自己解决了。贴在下面,共需要的朋友看看:因为这个破系统是一个垃圾公司做的,
    在这一行加上alert(frame)来看结果,显示frame没有获取到值,所以报错为null
    我这两天耐着性子把代码看了一遍,拿搜索工具协助找关键词。我在var frame = parent.document.getElementById("mainFrame");里,
    在这一行下面加上alert(frame)来看结果,显示frame没有获取到值,所以报错为null。
    最终发现问题出在调用download_tree.js的上级文档download_main.html中的
    <frame src="download_readme.jsp" name="mainFrame" scrolling="yes" noresize marginwidth="160" bordercolor="#828282" title="leftFrame">
    缺少id="mainFrame",使得
    parent.document.getElementById("mainFrame")在IE8中获取不到数据。加上id="mainFrame"后,问题解决。经过扩展阅读,这种情况还存在很多处。奶奶的,国内很多像垃圾一样的所谓软件公司,在IE6下写的东西就不知道在IE8或其他主流浏览器下测试做兼容性处理,做出来的东西堪称“垃圾中的战斗机”!感谢楼上各位朋友倾情相助!分就平均给了,呵呵,祝大家新年快乐,注意身体!
      

  11.   

    今天,问了一个兄弟单位的朋友是否遇到这个问题(因为他们也用这套系统),他居然说他们没有遇到这个问题,我说是怎么处理的,他说,就是启用IE8的兼容性模式,我一试,还真是那样。Omygod!
      

  12.   

    既然缺少缺少id="mainFrame",为什么在别的浏览器下可以正常运行?