跨Frame的日历控件,在meizz3.0版基础上用Popup改写

2024-02-22 17:38

本文主要是介绍跨Frame的日历控件,在meizz3.0版基础上用Popup改写,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

因为公司的单点登录框架的原因,需要在一个空间非常狭小的地方,放一个日历控件,网上搜了下,支持跨frame的日历控件非常少,而且很丑于是只好自己动手了,以前一直在用梅花雪的日历感觉十分好用,于是准备在梅花雪3.0日历控件基础上进行修改,经过两个晚上的奋战终于搞定了,不过丢失了快捷键,并且当select列表长度超过日历高后失效.汗一个,实在搞不定了就那样吧,把年份调的少些,刚好可以显示在日历高度范围内就好了.快捷键也搞不定了,希望有牛人能够帮助改进.

 

<!--
document.write(
" <div id=meizzCalendarLayer style='position: absolute; z-index: 9999; width: 144; height: 193; display: none'> " );
document.write(
" <iframe name=meizzCalendarIframe scrolling=no frameborder=0 width=100% height=100%></iframe></div> " );
var  syjPopup  =  window.createPopup();
syjPopup.document.createStyleSheet(
' syj.css ' );
function  writeIframe()
{
    
var  strIframe  =   " <form name=meizz> " ;
    
if  (WebCalendar.drag){ strIframe  +=   " <scr " + " ipt language=javascript> " +
    
" var drag=false, cx=0, cy=0, o = parent.WebCalendar.calendar; function document.onmousemove(){ " +
    
" if(parent.WebCalendar.drag && drag){if(this.syjPopup.document.body.style.left=='')this.syjPopup.document.body.style.left=0; if(this.syjPopup.document.body.style.top=='')this.syjPopup.document.body.style.top=0; " +
    
" this.syjPopup.document.body.style.left = parseInt(this.syjPopup.document.body.style.left) + window.event.clientX-cx; " +
    
" this.syjPopup.document.body.style.top  = parseInt(this.syjPopup.document.body.style.top)  + window.event.clientY-cy;}} " +
    
" function dragStart(){cx=window.event.clientX; cy=window.event.clientY; drag=true;}</scr " + " ipt> " }

    strIframe 
+= " <table id=tableMain class=bg border=0 cellspacing=2 cellpadding=0> " +
    
" <tr><td width=140 height=19 bgcolor=' " +  WebCalendar.lightColor  + " '> " +
    
"     <table width=140 id=tableHead border=0 cellspacing=1 cellpadding=0><tr align=center> " +
    
"     <td width=15 height=19 class=bg title='向前翻 1 月' style='cursor: hand' οnclick='parent.prevM()'><b>&lt;</b></td> " +
    
"     <td width=60 id=meizzYearHead οnclick='parent.funYearSelect(parseInt(this.innerText, 10))' " +
    
"     οnmοuseοver='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor' " +
    
"     οnmοuseοut='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor' style='cursor: hand'></td> " +
    
"     <td width=40 id=meizzYearMonth οnclick='parent.funMonthSelect(parseInt(this.innerText, 10))' " +
    
"     οnmοuseοver='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor' " +
    
"     οnmοuseοut='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor' style='cursor: hand'></td> " +
    
"     <td width=15 class=bg title='向后翻 1 月' οnclick='parent.nextM()' style='cursor: hand'><b>&gt;</b></td></tr></table> " +
    
" </td></tr><tr><td height=20><table id=tableWeek border=1 width=140 cellpadding=0 cellspacing=0  " ;
    
if (WebCalendar.drag){strIframe  +=   " οnmοusedοwn='dragStart()' οnmοuseup='drag=false' οnmοuseοut='drag=false' " ;}
    strIframe 
+=   "  borderColorLight=' " +  WebCalendar.darkColor  + " ' borderColorDark=' " +  WebCalendar.lightColor  + " '> " +
    
"     <tr align=center><td height=20>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr></table> " +
    
" </td></tr><tr><td valign=top width=140 bgcolor=' " +  WebCalendar.lightColor  + " '> " +
    
"     <table id=tableDay height=120 width=140 border=0 cellspacing=1 cellpadding=0> " ;
         
for ( var  x = 0 ; x < 5 ; x ++ ){ strIframe  +=   " <tr> " ;
         
for ( var  y = 0 ; y < 7 ; y ++ )  strIframe  +=   " <td class=out id='meizzDay " +  (x * 7 + y)  + " '></td> " ; strIframe  +=   " </tr> " ;}
         strIframe 
+=   " <tr> " ;
         
for ( var  x = 35 ; x < 39 ; x ++ ) strIframe  +=   " <td class=out id='meizzDay " +  x  + " '></td> " ;
         strIframe 
+= " <td colspan=3 class=out ><div class=divButton style='width: 100%;height: 100%;border: 0;padding-top: 4px;font-weight: normal;' οnfοcus='this.blur()' οnclick='parent.hiddenCalendar()'>关闭</div></td></tr></table> " +
    
" </td></tr><tr><td height=20 width=140 bgcolor=' " +  WebCalendar.lightColor  + " '> " +
        
" <div name=prevYear class=divButton title='向前翻 1 年' οnclick='parent.prevY()' οnfοcus='this.blur()' style='width: 20px;border-right: none;meizz:expression(this.disabled=parent.WebCalendar.thisYear==1000);'>&lt;&lt;</div> " +
        
" <div name=prevMonth class=divButton title='向前翻 1 月'  οnclick='parent.prevM()' οnfοcus='this.blur()' style='width: 17px;'>&lt;</div> " +
        
" <div name=today class=divButton title='当前日期' οnclick="parent.returnDate(new Date().getDate() +'/'+ (new Date().getMonth() +1) +'/'+ new Date().getFullYear())" οnfοcus='this.blur()' style='width: 50;margin-left: 8px;margin-right: 8px;'>今天</div> " +
        
" <div name=nextMonth class=divButton title='向后翻 1 月' οnclick='parent.nextM()' οnfοcus='this.blur()' style='width: 17px;'>&gt;</div> " +
        
" <div name=nextYear class=divButton title='向后翻 1 年' οnclick='parent.nextY()' οnfοcus='this.blur()' style='width: 20px;border-left: none;meizz:expression(this.disabled=parent.WebCalendar.thisYear==9999);'>&gt;&gt;</div> " +
    
" </td></tr><table></form> " ;

    
with (WebCalendar.iframe)
    {
        document.writeln(strIframe); document.close();
        
for ( var  i = 0 ; i < 39 ; i ++ )
        {
            WebCalendar.dayObj[i] 
=  eval( " meizzDay " +  i);
            WebCalendar.dayObj[i].onmouseover 
=  dayMouseOver;
            WebCalendar.dayObj[i].onmouseout  
=  dayMouseOut;
            WebCalendar.dayObj[i].onclick     
=  returnDate;
        }
    }
    
var  sbody  =   this .syjPopup.document.body;
    sbody.style.overflow  
=   " hidden " ;
    
this .syjPopup.document.body.innerHTML  =  strIframe;
    
with (syjPopup.document.body.all)
    {
        
for ( var  i = 0 ; i < 39 ; i ++ )
        {
            WebCalendar.dayObj[i] 
=  eval( " meizzDay " +  i);
            WebCalendar.dayObj[i].onmouseover 
=  dayMouseOver;
            WebCalendar.dayObj[i].onmouseout  
=  dayMouseOut;
            WebCalendar.dayObj[i].onclick     
=  returnDate;
        }
    }
}
function  WebCalendar()  // 初始化日历的设置
{
    
this .daysMonth   =   new  Array( 31 28 31 30 31 30 31 31 30 31 30 31 );
    
this .day        

这篇关于跨Frame的日历控件,在meizz3.0版基础上用Popup改写的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/736011

相关文章

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Python WebSockets 库从基础到实战使用举例

《PythonWebSockets库从基础到实战使用举例》WebSocket是一种全双工、持久化的网络通信协议,适用于需要低延迟的应用,如实时聊天、股票行情推送、在线协作、多人游戏等,本文给大家介... 目录1. 引言2. 为什么使用 WebSocket?3. 安装 WebSockets 库4. 使用 We

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式

MySQL数据类型与表操作全指南( 从基础到高级实践)

《MySQL数据类型与表操作全指南(从基础到高级实践)》本文详解MySQL数据类型分类(数值、日期/时间、字符串)及表操作(创建、修改、维护),涵盖优化技巧如数据类型选择、备份、分区,强调规范设计与... 目录mysql数据类型详解数值类型日期时间类型字符串类型表操作全解析创建表修改表结构添加列修改列删除列

Python 函数详解:从基础语法到高级使用技巧

《Python函数详解:从基础语法到高级使用技巧》本文基于实例代码,全面讲解Python函数的定义、参数传递、变量作用域及类型标注等知识点,帮助初学者快速掌握函数的使用技巧,感兴趣的朋友跟随小编一起... 目录一、函数的基本概念与作用二、函数的定义与调用1. 无参函数2. 带参函数3. 带返回值的函数4.

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas