跨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

相关文章

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

c++基础版

c++基础版 Windows环境搭建第一个C++程序c++程序运行原理注释常亮字面常亮符号常亮 变量数据类型整型实型常量类型确定char类型字符串布尔类型 控制台输入随机数产生枚举定义数组数组便利 指针基础野指针空指针指针运算动态内存分配 结构体结构体默认值结构体数组结构体指针结构体指针数组函数无返回值函数和void类型地址传递函数传递数组 引用函数引用传参返回指针的正确写法函数返回数组

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(