代码之家  ›  专栏  ›  技术社区  ›  Chau

extjs工具提示、iframes和ie=>问题

  •  2
  • Chau  · 技术社区  · 14 年前

    我有一个应用程序 OpenLayers , Extjs GeoExt . 我的应用程序运行良好,但我需要将它放在 IFrame 在另一页。执行此操作时,我的工具栏在 Internet Explorer .

    原因是 ext.quicktips.init(); . 注释掉这一行,一切都很好-当然除了快速提示=)

    但为什么会引起问题呢?是因为我用错了,放错了还是因为它不喜欢 Internet Explorer IFrames ?


    链接 :

    Link to the IFrame page

    内嵌框架 页:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
        <body>
            <iframe height="660" src="http://www.gis34.dk/doctype.html" width="660">
              <p>This browser does not support <i>frames</i>.</p>
            </iframe>
        </body>
    </html>
    

    应用 页:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script type="text/javascript" language="javascript">
            var map;
            var mapPanel;
            var mainViewport;
            var toolbarItems = [];
        </script>
        <link href="/Libraries/Ext/resources/css/ext-all.css" type="text/css"
        rel="stylesheet" />
        <link href="/Libraries/GeoExt/resources/css/geoext-all-debug.css" type="text/css"
        rel="stylesheet" />
        <link href="/CSS/Extjs.css" type="text/css" rel="stylesheet" />
        <link href="/CSS/OpenLayers.css" type="text/css" rel="stylesheet" />
        <link href="/CSS/Poseidon.css" type="text/css" rel="stylesheet" />
    </head>
    
    <body>
        <script src="/Libraries/OpenLayers/OpenLayers.js" type="text/javascript"></script>
        <script src="/Libraries/Ext/adapter/ext/ext-base-debug.js" type="text/javascript"></script>
        <script src="/Libraries/Ext/ext-all-debug.js" type="text/javascript"></script>
        <script src="/Libraries/GeoExt/lib/GeoExt.js" type="text/javascript"></script>
        <script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"
        type="text/javascript"></script>
        <div id="map">
        </div>
        <script type="text/javascript">
            Ext.onReady(function() {
                Ext.QuickTips.init(); // Uncomment this line!
    
                Ext.BLANK_IMAGE_URL = '/Libraries/Ext/resources/images/default/s.gif';
    
                var layer = new OpenLayers.Layer.OSM.Mapnik('OpenStreetMap Mapnik', {
                    sphericalMercator: true
                }, {
                    isBaseLayer: true
                });
    
                var mapOptions = {
                    projection: 'EPSG:900913',
                    units: 'm',
                    maxExtent: new OpenLayers.Bounds(1390414.0280576, 7490505.7050394, 1406198.2743956, 7501990.3685372),
                    minResolution: '0.125',
                    maxResolution: '1000',
                    restrictedExtent: new OpenLayers.Bounds(1390414.0280576, 7490505.7050394, 1406198.2743956, 7501990.3685372),
                    controls: [
                        ]
                };
                map = new OpenLayers.Map('', mapOptions);
    
                var Navigation = new OpenLayers.Control.Navigation();
                action = new GeoExt.Action({
                    control: new OpenLayers.Control.ZoomBox({
                        out: false
                    }),
                    map: map,
                    tooltip: "Zoom in",
                    iconCls: 'icon-zoom-in',
                    toggleGroup: 'mapTools',
                    group: 'mapTools'
                });
                toolbarItems.push(action);
                action = new GeoExt.Action({
                    control: new OpenLayers.Control.ZoomBox({
                        out: true
                    }),
                    map: map,
                    tooltip: "Zoom out",
                    iconCls: 'icon-zoom-out',
                    toggleGroup: 'mapTools',
                    group: 'mapTools'
                });
                toolbarItems.push(action);
    
                action = new GeoExt.Action({
                    control: new OpenLayers.Control.ZoomToMaxExtent(),
                    map: map,
                    iconCls: 'icon-zoom-max-extent',
                    tooltip: 'Zoom helt ud'
                });
                toolbarItems.push(action);
                map.addControl(Navigation);
                map.addLayer(layer);
    
                mapPanel = new GeoExt.MapPanel({
                    border: true,
                    id: 'mapPanel',
                    region: "center",
                    map: map,
                    tbar: toolbarItems
                });
                mainViewport = new Ext.Viewport({
                    layout: "fit",
                    hideBorders: true,
                    items: {
                        layout: "border",
                        deferredRender: false,
                        items: [
                            mapPanel
                            ]
                    }
                });
            });
        </script>
    </body>
    </html>
    
    1 回复  |  直到 14 年前
        1
  •  2
  •   Evan Trimboli    14 年前

    我也遇到过类似的问题.

    这个问题似乎与元素的取消屏蔽有关。

    通过拖放管理器在文档的mousedown上禁用快速提示,然后在mouseup上启用。在启用时,它取消对元素的映射,并尝试删除类,这似乎导致了它的出现。我真的不知道为什么。

    无论如何,在unmask()方法中,尝试修改代码,使其仅在已有掩码的情况下调用removeClass。

    unmask : function(){ var me = this, dom = me.dom, mask = data(dom, 'mask'), maskMsg = data(dom, 'maskMsg'), hasMask;

    if(mask){
        if(maskMsg){
            maskMsg.remove();
                data(dom, 'maskMsg', undefined);
        }
        mask.remove();
            data(dom, 'mask', undefined);
            hasMask = true;
    }
    if(hasMask){
            me.removeClass([XMASKED, XMASKEDRELATIVE]);
        }
    }