最近使用EXT写了一个panel,在panel中放入了IFRame,
frame.html部分代码:title: '工作台',
frame:true,
html: '<iframe id=\'mainframe\' src=\'\' frameborder=\'0\' width=\'100%\' ></iframe>',
autoHeight:true,
collapsible: true,
border:true在test.html中含有如下代码: <script type="text/javascript">
Ext.onReady(function (){
Ext.MessageBox.alert("信息","我已经加载!");
});
</script>
但是在以后frame.html的调用中:document.all.mainframe.src = "./test/test.html";
frame.html的iframe中显示面板是灰色的,而且显示的alert对话框不能点,也不能关了,
页面还报错:
网页错误详细信息消息: 对象不支持此属性或方法
行: 9
字符: 3263
代码: 0
URI: http://localhost:8080/PROJECT/js/ext-all.js
消息: 对象不支持此属性或方法
行: 9
字符: 3263
代码: 0
URI: http://localhost:8080/PROJECT/js/ext-all.js
请问这个这么解决
我想解决在panel中的iframe引用另一个含有ext元素的页面。怎么弄呀~~请高手指点迷津~~~~

解决方案 »

  1.   

    document.all.mainframe
    你看看能不能取到了?
      

  2.   

    以下测试是可以的,是不是其他代码有问题?
    <link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" />
    <script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="extjs/ext-all.js"></script>
    <script>Ext.onReady(function(){
    panel = new Ext.Panel({
    title: '工作台',
    renderTo:'pad',
    frame:true,
    html: '<iframe id=\'mainframe\' src=\'\' frameborder=\'0\' width=\'100%\' ></iframe>',
    autoHeight:true,
    collapsible: true,
    border:true
    });
    Ext.getDom("mainframe").contentWindow.location.href = "test.html";
     
    });
    </script>
    <div id="pad"></div>
    test.html<link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" />
    <script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="extjs/ext-all.js"></script>
    <script>
    Ext.onReady(function(){
    Ext.MessageBox.alert("信息","我已经加载!");
    });
    </script>
      

  3.   

    使用2楼的Ext.getDom("mainframe").contentWindow.location.href = "test.html";后,问题还是没有解决。
    现在我把我的所有代码打上来,请大家看看:
    frame.html<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
    <html>
    <head>
    <script type="text/javascript" src="./js/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="./js/ext-all.js"></script>
    <link rel="stylesheet" href="./js/css/ext-all.css" type="text/css"></link>
    <script type="text/javascript">
    Ext.BLANK_IMAGE_URL = './js/resources/images/default/s.gif'; 
    Ext.onReady(function(){
    var mainpanel = new Ext.Panel({
    title: '工作台',
    frame:true,
        html: '<iframe id=\'mainframe\' src=\'\' scrolling=yes frameborder=\'0\' width=\'100%\' height=\'500\'></iframe>',
        autoHeight:true,
        collapsible: true,
        border:true,
        split: true
    });


    new Ext.Viewport({
        layout: 'border',
        items: [ {
            region: 'west',
            collapsible: true,
            title: '工作导航',
            xtype: 'treepanel',
            width: 130,
            autoScroll: true,
            split: true,
            loader: new Ext.tree.TreeLoader(),
            root: new Ext.tree.AsyncTreeNode({
                expanded: true,
                children: [{
                    text: '工程项目',
                    children:[{
                     text:'工程管理',
                     leaf:true
    }]
    }]
            }),
            rootVisible: false,
            listeners: {
                click: function(n) {
                 if( n.attributes.text =="工程管理"){
                 //document.all.mainframe.src = "./project/project.html";
                 Ext.getDom("mainframe").contentWindow.location.href = "./project/project.html";
                 }
                }
            }
        }, {
            region: 'center',
            xtype: 'panel',
            items: mainpanel
        }, {
            region: 'south',
            title: 'Information',
            collapsible: true,
            collapsed:true,
            html: 'Information goes here sfsdf',
            split: false,
            height: 100,
            minHeight: 100
        }]
    });

    });
    </script>
    </head>
    <body>
    <div id="west"></div>
    <div id="north"></div>
    <div id="center"></div>
    <div id="south"></div>
    </body>
    </html>project.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>project.html</title>
    <script type="text/javascript" src="../js/adapter/ext/ext-base.js"></script>
    <script type="text/javascript" src="../js/ext-all.js"></script>
    <link rel="stylesheet" href="../js/css/ext-all.css" type="text/css"></link>
    <script type="text/javascript">
    Ext.BLANK_IMAGE_URL = '../js/resources/images/default/s.gif'; 
    Ext.onReady(function (){
        var simple = new Ext.FormPanel({
            labelWidth: 75, // label settings here cascade unless overridden
            frame:true,
            title: 'Simple Form',
            bodyStyle:'padding:5px 5px 0',
            width: 350,
            defaults: {width: 230},
            defaultType: 'textfield',

            items: [{
                    fieldLabel: 'First Name',
                    name: 'first',
                    allowBlank:false
                },{
                    fieldLabel: 'Last Name',
                    name: 'last'
                },{
                    fieldLabel: 'Company',
                    name: 'company'
                }, {
                    fieldLabel: 'Email',
                    name: 'email',
                    vtype:'email'
                }, new Ext.form.TimeField({
                    fieldLabel: 'Time',
                    name: 'time',
                    minValue: '8:00am',
                    maxValue: '6:00pm'
                })
            ],

            buttons: [{
                text: 'Save',
                handler:function(){
                 Ext.MessageBox.alert("asdf");
                }
            },{
                text: 'Cancel',
                handler:function(){
                
                }
            }]
        });

        simple.render(afsd);
    });
    </script>
    </head> <body>
    asdfasdfsddddddddddddd
    <br>
    <input type=button name='show-btn' id='show-btn' value='a嘎嘎'>
    <div id="afsd"></div>
    asdfasdfsddddddddddddd
    </body>
    </html>请大家看看有什么问题啊!!求救!!!
      

  4.   

    <script type="text/javascript" src="../js/adapter/ext/ext-base.js"></script>
            <script type="text/javascript" src="../js/ext-all.js"></script>
            <link rel="stylesheet" href="../js/css/ext-all.css" type="text/css"></link>修改为<script type="text/javascript" src="./js/adapter/ext/ext-base.js"></script>
            <script type="text/javascript" src="./js/ext-all.js"></script>
            <link rel="stylesheet" href="./js/css/ext-all.css" type="text/css"></link>
    路径错了,修改完之后调试你的就是正常的
      

  5.   

    调用父窗口的Ext.MessageBox即可.handler:function(){
         parent.Ext.MessageBox.alert("asdf");
    }