首页 > 其他分享 >通过自建iframe遮罩层解决flash位于window窗口之上的问题

通过自建iframe遮罩层解决flash位于window窗口之上的问题

时间:2023-09-07 12:05:36浏览次数:55  
标签:function 遮罩 flash Ext shimmer searchWin window winEl


       效果对于固定不动窗口或菜单则更有效,并不太适用于可移动的窗口,遮罩层与窗口位置很难一致。若是可移动的窗口建议用前面一篇文章所介绍的shim属性Ext自身提供的方法。

       同样下面的方法只对IE有效,firefox下依然无效。

      

Ext.onReady(function() {
       ......
      //创建垫片效果iframe遮罩层
  function createShim(coordinate) { 
       closeShim();
          var shimmer = document.createElement('iframe');   
          shimmer.id='shimmer';   
          shimmer.style.position='absolute';   
          shimmer.style.top=coordinate.top;   
          shimmer.style.left=coordinate.left;   
          shimmer.style.width=coordinate.width;   
          shimmer.style.height=coordinate.height;   
          shimmer.style.zIndex='999';   
          shimmer.setAttribute('frameborder','0');   
         // shimmer.setAttribute('src','javascript:false;');  
          document.body.appendChild(shimmer);   
  } 
       //移除iframe遮罩层   
      function closeShim(){
        var shimmer = document.getElementById('shimmer')   
         if(shimmer){
         document.body.removeChild(shimmer);
         }
      }
        // 查询窗口对象变量
 var searchWin;
 // 查询按钮
 function doSearch_pic_panel() {
                 searchWin = Ext.getCmp('search-window');  //避免出现显示两个窗口的问题            if (!searchWin) {
   searchWin = new Ext.Window({
    contentEL:'search-window',
    title : '请输入查询条件',
    layout : 'fit',
    width : 400,
    height : 300,
    closeAction : 'hide',
    plain : true,
    floating:true,
    shim:true,
    items : searchFormPanel_pic_panel,
    buttons : [{
     text : '查询',
     handler : function() {
              
       searchWin.hide();
     }
    }, {
     text : '关闭',
     handler : function() {
      searchWin.hide();
     }
    }]
   });
             searchWin.on("show",function(window){
    var winEl = window;
    var position =new Array();
    position = winEl.getPosition(true);
     createShim({   
                 top:position[1],   
                 left:position[0],   
                 width:winEl.getFrameWidth()+winEl.getInnerWidth(),   
                 height:winEl.getFrameHeight()+winEl.getInnerHeight()  
              });  
   });
      
            searchWin.on("hide",function(window){
            closeShim();
            });
            searchWin.on("beforemove",function(component,x,y){
             closeShim();
            });
            searchWin.on("move",function(component,x,y){
            closeShim();
             var winEl = Ext.getCmp('search-window');
    var position =new Array();
    position = winEl.getPosition(true);
             createShim({   
                 top:y,   
                 left:x, 
                 width:winEl.getFrameWidth()+winEl.getInnerWidth(),   
                 height:winEl.getFrameHeight()+winEl.getInnerHeight()  
            }); 
            });
  }
  searchWin.show();
 }
  ......
});

其实贴出来主要是学习这一种思想。网上也有关于该问题的讨论:

Why does moving the IFRAME shim slow things down?

              链接地址:https://www.extjs.com/forum/showthread.php?1384-Why-does-moving-the-IFRAME-shim-slow-things-down

       Iframe Shim解决applet挡住ExtJS工具栏菜单问题

               链接地址:http://agile-boy.javaeye.com/blog/140935

[OPEN-884] Shim size problem on Ext.Window with shadow

                链接地址:http://www.extjs.com/forum/showthread.php?97413-OPEN-884-Shim-size-problem-on-Ext.Window-with-shadow&p=459829#post459829

标签:function,遮罩,flash,Ext,shimmer,searchWin,window,winEl
From: https://blog.51cto.com/u_2544485/7395586

相关文章

  • window7设置文件夹选项——显示文件扩展名
         公司给我们换了新电脑,由神舟换成联想,公司的几台神舟均先后出现问题,故被同事命名为:神舟垃圾。     联想本机安装的就是家庭版window7,已经花了一天一晚都没整好。     sqlserver2005,oracle均装不上去,真是急死人了,不兼容装不了那要这个系统干吗。同事想把整个......
  • 软件测试|最详细的Windows安装Python教程
    简介Python是一种简单易学的高级编程语言,在Windows系统下安装Python非常简单。本文将详细介绍Windows系统下安装Python的教程。步骤1:下载Python安装程序首先,您需要前往Python官方网站(https://www.python.org/downloads/)下载Python的安装程序。在网页上有两个主要的Python版本:Python......
  • 在Windows中给鼠标右键添加菜单
    我们可以通过修改注册表来给鼠标右键添加菜单,添加的位置与修改注册表的位置有关系:空白处右键(或者桌面空白处):HKEY_CLASSES_ROOT/Directory/background/shell文件夹右键:HKEY_CLASSES_ROOT/Directory/shell文件上右键:HKEY_CLASSES_ROOT/*/shell1.win+r打开窗口,输入regedit......
  • Windows平台里的grep——1.Borland grep
    grep来自英文词组“globalsearchregularexpressionandprintouttheline”的缩写,意思是用于全面搜索的正则表达式,并输出相应行。Unix和Linux都直接提供了grep命令。然而,不管是在CGI界面的MS-DOS系统还是GUI界面的Windows系统中,微软都没有直接提供grep命令,所提供的find命令在......
  • windows vs使用grpc-cpp的坑
    1.通过vcpkg安装protoc和grpc-cpp2.生成proto协议代码:protoc-I..-I.--cpp_out=. test.proto3.生成grpc服务代码:protoc-I..-I.--grpc_out=.--plugin=protoc-gen-grpc=`full_path\grpc_cpp_plugin.exe` test.proto4.创建vs工程,引用生成的代码,引用vcpkg安装的pro......
  • Windows驱动程序是支持多线程【chatgpt】
    是的,Windows驱动程序是支持多线程的。驱动程序是运行在操作系统内核空间的软件模块,可以通过创建和管理多个线程来实现并发处理的能力。通过多线程,驱动程序可以同时处理多个请求或事件,提高系统的响应性能和并发处理能力。在Windows驱动程序的开发中,可以使用内核模式线程来执行异步......
  • docker 打开报错 windows hypervisor is not present docker desktop is unable to de
     dockerdesktop-windowshypervisorisnotpresentdockerdesktopisunabletodetectahypervisor.hardwareassistedvirtualizationanddataexecutionprotectionmustbeenabledintheblos.seehttps://docsdocker.com/desktop/troubleshoot/topics/#virtua......
  • Windows MSVC 编译 libcurl 库,并导入到 QT 中
    前提QT已经配置好,编译器使用MSVC2017编译libcurl库1、下载curl官网下载,windows选择.zip后缀的文件2、nmake编译(VisualStudio中的附带命令)(1)解压并进入文件夹,双击运行buildconf.bat文件(2)开始菜单找到VisualStudio2017->VisualStudioTools->VC文件夹,选择x86......
  • Windows下Mysql完全卸载教程
    1,windows系统(快捷键win+r)进入命令行输入:netstopmysql2,进入控制面板,卸载mysql3,进入C:\ProgramFiles(x86),C:\ProgramFiles,C:\ProgramData中,将MySQL文件夹删除4,在注册表中彻底清除mysql的东西快捷键win+r输入regedit进入注册表找到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Ser......
  • ELK-windows搭建笔记
    一、        介绍Elasticsearch:开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Logstash:对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。Kibana:以为Logstash和ElasticSearch提供......