网站变灰代码
祖国多灾多难,希望网站变灰的次数越少越好。。
html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }
祖国多灾多难,希望网站变灰的次数越少越好。。
html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }
1、开始—运行—输入regedit—打开注册表
2、F3,在弹出的框里输入“My Pictures”或盘符,搜索
3、检查搜索到的“My Pictures”或盘符的值路径对不对
4、修改值路径为正确可访问的路径,OK。
PS:一般ghost系统特别是xp容易出这个问题,有些软件改变了其路径,之后电脑又进行了ghost还原。
IP(Internet Protocol,Internet协议)是互联网的支柱,它已经有近20年的历史,第一个正是发布的规范在RFC 791中只有简短的45页,定义了IP属于网络层协议,1991年,IETF确定了目前我们正在使用的IP协议版本,即IPv4,但现在已经完全停止开发了.新的IP版本叫做IPng(Next Generation,下一代IP协议)或IPv6,这个版本经历了漫长的讨论和反复的修改,1994年IETF终于明确了IPv6的方向,IPv6的主 要目的是解决IPv4中存在的问题,IPv6除了具有IPv4具有的功能外,还消除了IPv4的局限性,它们之间既有相同点,又有不同点.
当你部署 IPv6时,在IPv4时代学到的知识仍然有用.IPv6和IPv4之间差异主要体现在五个方面:寻址和路由、安全、网络地址翻译、管理工作量和对移动设备的支持.此外,IPv6还包括一个重要的特征:一套从IPv4迁移和过渡到IPv6的计划.
自1994年以来,已经发布了超过30个IPv6的RFC文档.改变IP协议意味着要改动许多上层协议和约定,从DNS和应用程序如何存储IP地址,到数据报如何在以太网、PPP、令牌环、FDDI和其它媒介上发送和路由,再到程序员如何调用网络函数都将会发生一些变化.IETF也不会疯狂到让大家一夜之间全部切换到IPv6,因此IETF也开发了IPv4和IPv6共存的标准和协议,如IPv4隧道里走IPv6,IPv6隧道里走IPv4,在同一个系统上长时间运行IPv4和IPv6(双堆栈),以及在各种环境中混合和匹配这两个协议.
Internet协议v4(IPv4)
Internet协议v4(IPv4)是Internet协议的第四个版本,它是第一个得到广泛部署的版本,和IPv6一起,它们是基于标准的 Internet网络互连方法的核心.IPv4仍然是目前部署最广泛的互联网层协议,IPv4的详细定义可参考IETF发布的RFC 791,它取代了早期定义文档RFC 760.IPv4是一个用于链路层包交换网络的连接协议,如以太网,它以尽力模式运行,因为它不能保证信息能100%传递,也不能保证按正确的顺序传输,更不能避免重复传输.IPv4未包含错误控制和流量控制机制,如果通过数据报头中的校验和方法发现数据被损坏,数据将被抛弃,包括数据完整性在内,均通过上层传输层协议解决,如传输控制协议.IPv4使用32位寻址方法,总共包含4294967296个有效地址,IPv4有四种不同的地址类型:A、B、C 和D.
有类别IP寻址
最初,IP地址被分为两部分,地址的高八位代表网络标识符,剩下的地址表示主机标识符,最大可以创建256个网络,人们很快就发现这样设计满足不了需要,为了克服这个限制,对高八位地址进行了重新定义,创建了一套网络类别,这就是后来著名的有类别网络,总共定义了五个类别:A、B、C、D和E,A、 B和C网络标识符长度不一样,剩下的地址部分用于标识主机,这意味着每个不同的网络类型可容纳的主机数目也不一样,D类地址表示多播地址,E类地址是未将来的应用程序保留的(译者注:有了IPv6,它还会被用到吗?).
无类别寻址
无类别寻址有三个基本类别.
• 子网
子网划分是一组技术,您可以使用这组技术来高效地划分单播地址前缀的地址空间以便在组织网络的子网间进行分配.单播地址前缀的固定部分包括前缀长度和前缀长度之前的位,这些位都具有定义的值.单播地址前缀的可变部分包括前缀长度之后设置为 0 的位.子网划分就是利用单播地址前缀的可变部分来创建更高效的地址前缀(浪费较少的可用地址),分配给组织网络的子网.最初定义 IPv4 的子网划分是为了更好地利用 A 类和 B 类 IPv4 公用网络 ID 的主机位.当您为 IPv4 网络 ID 划分子网时,您会在 IPv4 地址的层次结构中定义一个额外的层次.子网网络 ID 具有“网络 ID/子网 ID/主机 ID”层次结构.在您为网络 ID 划分子网后,每个子网网络 ID 都是一个子网(或具有“网络 ID/主机 ID”层次结构的网络 ID)的新地址前缀.
• 可变长子网掩码(VLSM)
可变长子网掩码(VLSM)是根据子网需要给它分配IP地址资源的一种方法,思科支持的IP路由协议,OSPF、双IS-IS、BGP-4和 EIGRP均支持无类别或VISM路由.历史上,EGP协议依赖于IP地址类型定义和真实交换的网络号(8,16或24位域),而与IP地址(32位号码)无关.RIP和IGRP交换的网络和子网号在32位域中,网络号、子网号和主机号之间的差别是一个约定问题,不用在路由协议中交换,现在用的一些协议要么使用一个前缀长度(地址中的连续位数),要么每个地址带有子网掩码来指出32位域中的哪一部分是需要路由的地址.在思科工程中经常可以见到需要使用可变长子网掩码的例子,在工程建设时通常有多个配置了FDDI和以太网接口的交换机,并做了编号以便每个交换子网可以支持62台主机,实际上,每个子网可能只会连接15-30台物理主机(打印服务器,工作站,文件服务器等),但许多工程也需要ISDN或帧中继供家庭办公用户使用,它们也需要一个单独的子网,这些家庭办公用户通常有一两个路由器和一个X终端或工作站,他们可能还有一台PC或苹果电脑也需要连网,因此,通常需要为他们配置支持6台主机的子网,还有一些用户需要配置支持14台主机的子网,点到点连接通常是不需要编号的.
• 无类别域间路由(CIDR)
使用超网时,靠无类别域间路由是减少路由表条目的数量,1993年左右,第一次引入了无类别域间路由,它的目的也是为了实现超网,超网允许路由聚合,CIDR引入了前缀标记,也叫做CIDR标记,前缀/CIDR标记现在在三种无类别IP寻址情况下使用:划分子网,VLSM/不同规模的子网和 CIDR/超网.
原IP地址类型由CIDR取代,相比之下,基于类型的方案被称为有类别的域间路由.CIDR的主要优势是允许对任意地址空间进行重新分区,因此可以给用户分配更小或更大的地址块,CIDR给Internet赋予了层次感,它将Internet分为国际ISP和国内ISP,然后又进一步细分为区域 ISP,区域ISP又再细分为本地ISP,本地ISP又再分为区,通过CIDR创建的这种分级结构由IANA(Internet Assigned Numbers Authority,互联网地址分配机构)和它的区域互联网注册管理机构(Regional Internet Registries,RIR)监管,管理全球互联网地址的分配,每个RIR维护一个可匿名搜索的WHOIS数据库,提供IP地址分配信息,从这些数据库查询出来的信息在众多根据IP地址进行地理定位的工具中扮演着核心角色,分级路由进一步按地理路由分解,在地理路由中,整个地址又被分成多个块,例如,一个块表示美国,一个块表示欧洲,一个表示中东,一个表示亚洲等等.
IPv4的局限性
从上世纪80年代开始,人们就意识到IPv4的地址即将耗尽,这是当初设计时未曾预料到的,这也是引入 有类别网络,创建CIDR寻址的驱动因素,尽管采取了这些措施,IPv4地址的消耗速度仍然让人惊讶,目前有两种较权威的估计,一种预测是2010年,也就是今年,IPv4地址将被用光,另一种预测是2012年才会用光.IPv4地址的耗尽主要原因是Internet用户,使用Internet连接的移动设备,以及连接Internet的ADSLmodem或有线modem的爆炸式增长,迫使我们开发和采用IPv6作为替代解决方案.
Internet协议v6(IPv6)
IPv6也就是著名的IPng,即所谓的下一代IP协议,它是被广泛使用的第二个Internet协议版本,它的设计目标是将IPv4逐渐过渡到IPv6,而不是一下子全部消灭掉IPv4,因此保留了IPv4的兼容性,从IPv4到IPv6的主要变化是:
▶扩展了路由和寻址能力:IPv6将IP地址规模从32位扩大到了128位,支持更多层次的寻址水平,更大的可寻址节点数,以及更简单的地址自动配置;
▶通过给多播地址增加一个“范围”域,多播路由的可扩展性得到了改进;
▶定义了一种新地址类型,叫做“任播地址”,它可以识别节点集,发送到任播地址的数据包可以传递给其中任一节点,在IPv6源路由中使用任播地址允许节点控制通信流的路径;
▶简化了报头格式:有些IPv4报头字段被删除或称为可选部分,减少数据包处理成本,让IPv6报头的带宽成本尽可能低.虽然IPv6地址长度是IPv4的4倍,但IPv6报文的头部长度只有IPv4报文头部长度的2倍;
▶改进了对可选项的支持:改进后IP头可选项经过编码后可更有效地进行转发,对可选项的长度限制也更宽松,为今后引入新的可选项提供了极好的灵活性;
▶服务质量(QoS)功能:增加了数据包标记功能,通过标记知道数据包属于哪个特定的通信流;
▶身份验证和隐私保护能力:IPv6包含了提供身份验证,数据完整性和保密等扩展的定义,虽然是扩展,但它们属于IPv6的基础组件;
▶IPv6由两部分组成,基础的IPv6报头和IPv6扩展头.
IPv6的优点
有了巨大的地址空间后,ISP有足够的IP地址分配给客户,甚至每个设备都可以拥有自己的IPv6地址.NAT(网络地址转换)已成为处理IP地址短缺得力的技术,但遗憾的是,许多Internet应用程序在NAT下都不能正常工作,如NFS,DNS和集团会议应有,此外,NAT也是企业对企业直接网络连接的障碍,需要进行复杂的地址转换才能让通信变得可靠,但它的扩展性很差,很容易出现单点故障,显得非常脆弱.
IPv6地址空间扩展的目标之一是让NAT技术边缘化,改善网络的连通性、可靠性和灵活性.IPv6在Internet上重新建立透明的端到端通信,由于IPv6地址长度较长,显得比较笨重,很多人看到那一长串地址都会头晕.IPv6的第二个主要目标是减少人们管理和配置系统的时间,因为IPv6 可以执行无状态自动配置,结合LAN MAC地址,加上网络路由器提供的前缀(不需要DHCP),可以确保创建一个唯一的IP地址.
当然,DHCP仍然有它的用处,如DNS服务器,不过需要支持DHCPv6,IPv6也给两个端点提供了一个中间地带,如SLP(Service Location Protocol,服务定位协议)协议,这可能使网络管理员的工作变得更加轻松.高带宽多媒体和容错应用是IPv6的第四个主要目标,多媒体应用可以利用多播的优势:可以将一个数据报传输到多个接收者.虽然IPv4也有多播功能,但它们是可选的,不是每个路由器和主机都支持,使用IPv6时,多播是必需的,前面已经提到,IPv6还增加了一种新的服务类型“任播”,与多播类似,任播有一个发送和接收数据包的节点组,当一个数据包发到一个任播组时,只会传输到组中的一个成员,这项新功能特别适合于容错环境,如Web服务器,DNS服务器.
另一方面,在IPv6上架设VPN(虚拟私有网络)是支持QoS的,IPv6支持IPv4相同的QoS功能,包括DiffServ标记,以及新的 20位通信流字段,IPv6的第五个主要目标是VPN.新的IPsec安全协议,ESP(封装安全协议)和AH(身份验证头)是附加到IPv4的,而 IPv6内置了这些协议,这意味着在IPv6世界中建设和部署网络时,保护网络的安全将会变得更加容易.
下面用一张表简单地对比一下IPv4和IPv6,以便加深理解.
IP(Internet Protocol,Internet协议)是互联网的支柱,它已经有近20年的历史,第一个正是发布的规范在RFC 791中只有简短的45页,定义了IP属于网络层协议,1991年,IETF确定了目前我们正在使用的IP协议版本,即IPv4,但现在已经完全停止开发了.新的IP版本叫做IPng(Next Generation,下一代IP协议)或IPv6,这个版本经历了漫长的讨论和反复的修改,1994年IETF终于明确了IPv6的方向,IPv6的主要目的是解决IPv4中存在的问题,IPv6除了具有IPv4具有的功能外,还消除了IPv4的局限性,它们之间既有相同点,又有不同点.当你部署 IPv6时,在IPv4时代学到的知识仍然有用.IPv6和IPv4之间差异主要体现在五个方面:寻址和路由、安全、网络地址翻译、管理工作量和对移动设备的支持.此外,IPv6还包括一个重要的特征:一套从IPv4迁移和过渡到IPv6的计划.
自1994年以来,已经发布了超过30个IPv6的RFC文档.改变IP协议意味着要改动许多上层协议和约定,从DNS和应用程序如何存储IP地址,到数据报如何在以太网、PPP、令牌环、FDDI和其它媒介上发送和路由,再到程序员如何调用网络函数都将会发生一些变化.IETF也不会疯狂到让大家一夜之间全部切换到IPv6,因此IETF也开发了IPv4和IPv6共存的标准和协议,如IPv4隧道里走IPv6,IPv6隧道里走IPv4,在同一个系统上长时间运行IPv4和IPv6(双堆栈),以及在各种环境中混合和匹配这两个协议.
Internet协议v4(IPv4)
Internet协议v4(IPv4)是Internet协议的第四个版本,它是第一个得到广泛部署的版本,和IPv6一起,它们是基于标准的 Internet网络互连方法的核心.IPv4仍然是目前部署最广泛的互联网层协议,IPv4的详细定义可参考IETF发布的RFC 791,它取代了早期定义文档RFC 760.IPv4是一个用于链路层包交换网络的连接协议,如以太网,它以尽力模式运行,因为它不能保证信息能100%传递,也不能保证按正确的顺序传输,更不能避免重复传输.IPv4未包含错误控制和流量控制机制,如果通过数据报头中的校验和方法发现数据被损坏,数据将被抛弃,包括数据完整性在内,均通过上层传输层协议解决,如传输控制协议.IPv4使用32位寻址方法,总共包含4294967296个有效地址,IPv4有四种不同的地址类型:A、B、C 和D.
有类别IP寻址
最初,IP地址被分为两部分,地址的高八位代表网络标识符,剩下的地址表示主机标识符,最大可以创建256个网络,人们很快就发现这样设计满足不了需要,为了克服这个限制,对高八位地址进行了重新定义,创建了一套网络类别,这就是后来著名的有类别网络,总共定义了五个类别:A、B、C、D和E,A、 B和C网络标识符长度不一样,剩下的地址部分用于标识主机,这意味着每个不同的网络类型可容纳的主机数目也不一样,D类地址表示多播地址,E类地址是未将来的应用程序保留的(译者注:有了IPv6,它还会被用到吗?).
无类别寻址
无类别寻址有三个基本类别.
• 子网
子网划分是一组技术,您可以使用这组技术来高效地划分单播地址前缀的地址空间以便在组织网络的子网间进行分配.单播地址前缀的固定部分包括前缀长度和前缀长度之前的位,这些位都具有定义的值.单播地址前缀的可变部分包括前缀长度之后设置为 0 的位.子网划分就是利用单播地址前缀的可变部分来创建更高效的地址前缀(浪费较少的可用地址),分配给组织网络的子网.最初定义 IPv4 的子网划分是为了更好地利用 A 类和 B 类 IPv4 公用网络 ID 的主机位.当您为 IPv4 网络 ID 划分子网时,您会在 IPv4 地址的层次结构中定义一个额外的层次.子网网络 ID 具有“网络 ID/子网 ID/主机 ID”层次结构.在您为网络 ID 划分子网后,每个子网网络 ID 都是一个子网(或具有“网络 ID/主机 ID”层次结构的网络 ID)的新地址前缀.
• 可变长子网掩码(VLSM)
可变长子网掩码(VLSM)是根据子网需要给它分配IP地址资源的一种方法,思科支持的IP路由协议,OSPF、双IS-IS、BGP-4和 EIGRP均支持无类别或VISM路由.历史上,EGP协议依赖于IP地址类型定义和真实交换的网络号(8,16或24位域),而与IP地址(32位号码)无关.RIP和IGRP交换的网络和子网号在32位域中,网络号、子网号和主机号之间的差别是一个约定问题,不用在路由协议中交换,现在用的一些协议要么使用一个前缀长度(地址中的连续位数),要么每个地址带有子网掩码来指出32位域中的哪一部分是需要路由的地址.在思科工程中经常可以见到需要使用可变长子网掩码的例子,在工程建设时通常有多个配置了FDDI和以太网接口的交换机,并做了编号以便每个交换子网可以支持62台主机,实际上,每个子网可能只会连接15-30台物理主机(打印服务器,工作站,文件服务器等),但许多工程也需要ISDN或帧中继供家庭办公用户使用,它们也需要一个单独的子网,这些家庭办公用户通常有一两个路由器和一个X终端或工作站,他们可能还有一台PC或苹果电脑也需要连网,因此,通常需要为他们配置支持6台主机的子网,还有一些用户需要配置支持14台主机的子网,点到点连接通常是不需要编号的.
• 无类别域间路由(CIDR)
使用超网时,靠无类别域间路由是减少路由表条目的数量,1993年左右,第一次引入了无类别域间路由,它的目的也是为了实现超网,超网允许路由聚合,CIDR引入了前缀标记,也叫做CIDR标记,前缀/CIDR标记现在在三种无类别IP寻址情况下使用:划分子网,VLSM/不同规模的子网和 CIDR/超网.
原IP地址类型由CIDR取代,相比之下,基于类型的方案被称为有类别的域间路由.CIDR的主要优势是允许对任意地址空间进行重新分区,因此可以给用户分配更小或更大的地址块,CIDR给Internet赋予了层次感,它将Internet分为国际ISP和国内ISP,然后又进一步细分为区域 ISP,区域ISP又再细分为本地ISP,本地ISP又再分为区,通过CIDR创建的这种分级结构由IANA(Internet Assigned Numbers Authority,互联网地址分配机构)和它的区域互联网注册管理机构(Regional Internet Registries,RIR)监管,管理全球互联网地址的分配,每个RIR维护一个可匿名搜索的WHOIS数据库,提供IP地址分配信息,从这些数据库查询出来的信息在众多根据IP地址进行地理定位的工具中扮演着核心角色,分级路由进一步按地理路由分解,在地理路由中,整个地址又被分成多个块,例如,一个块表示美国,一个块表示欧洲,一个表示中东,一个表示亚洲等等.
IPv4的局限性
从上世纪80年代开始,人们就意识到IPv4的地址即将耗尽,这是当初设计时未曾预料到的,这也是引入 有类别网络,创建CIDR寻址的驱动因素,尽管采取了这些措施,IPv4地址的消耗速度仍然让人惊讶,目前有两种较权威的估计,一种预测是2010年,也就是今年,IPv4地址将被用光,另一种预测是2012年才会用光.IPv4地址的耗尽主要原因是Internet用户,使用Internet连接的移动设备,以及连接Internet的ADSLmodem或有线modem的爆炸式增长,迫使我们开发和采用IPv6作为替代解决方案.
Internet协议v6(IPv6)
IPv6也就是著名的IPng,即所谓的下一代IP协议,它是被广泛使用的第二个Internet协议版本,它的设计目标是将IPv4逐渐过渡到IPv6,而不是一下子全部消灭掉IPv4,因此保留了IPv4的兼容性,从IPv4到IPv6的主要变化是:
▶扩展了路由和寻址能力:IPv6将IP地址规模从32位扩大到了128位,支持更多层次的寻址水平,更大的可寻址节点数,以及更简单的地址自动配置;
▶通过给多播地址增加一个“范围”域,多播路由的可扩展性得到了改进;
▶定义了一种新地址类型,叫做“任播地址”,它可以识别节点集,发送到任播地址的数据包可以传递给其中任一节点,在IPv6源路由中使用任播地址允许节点控制通信流的路径;
▶简化了报头格式:有些IPv4报头字段被删除或称为可选部分,减少数据包处理成本,让IPv6报头的带宽成本尽可能低.虽然IPv6地址长度是IPv4的4倍,但IPv6报文的头部长度只有IPv4报文头部长度的2倍;
▶改进了对可选项的支持:改进后IP头可选项经过编码后可更有效地进行转发,对可选项的长度限制也更宽松,为今后引入新的可选项提供了极好的灵活性;
▶服务质量(QoS)功能:增加了数据包标记功能,通过标记知道数据包属于哪个特定的通信流;
▶身份验证和隐私保护能力:IPv6包含了提供身份验证,数据完整性和保密等扩展的定义,虽然是扩展,但它们属于IPv6的基础组件;
▶IPv6由两部分组成,基础的IPv6报头和IPv6扩展头.
IPv6的优点
有了巨大的地址空间后,ISP有足够的IP地址分配给客户,甚至每个设备都可以拥有自己的IPv6地址.NAT(网络地址转换)已成为处理IP地址短缺得力的技术,但遗憾的是,许多Internet应用程序在NAT下都不能正常工作,如NFS,DNS和集团会议应有,此外,NAT也是企业对企业直接网络连接的障碍,需要进行复杂的地址转换才能让通信变得可靠,但它的扩展性很差,很容易出现单点故障,显得非常脆弱.
IPv6地址空间扩展的目标之一是让NAT技术边缘化,改善网络的连通性、可靠性和灵活性.IPv6在Internet上重新建立透明的端到端通信,由于IPv6地址长度较长,显得比较笨重,很多人看到那一长串地址都会头晕.IPv6的第二个主要目标是减少人们管理和配置系统的时间,因为IPv6 可以执行无状态自动配置,结合LAN MAC地址,加上网络路由器提供的前缀(不需要DHCP),可以确保创建一个唯一的IP地址.
当然,DHCP仍然有它的用处,如DNS服务器,不过需要支持DHCPv6,IPv6也给两个端点提供了一个中间地带,如SLP(Service Location Protocol,服务定位协议)协议,这可能使网络管理员的工作变得更加轻松.高带宽多媒体和容错应用是IPv6的第四个主要目标,多媒体应用可以利用多播的优势:可以将一个数据报传输到多个接收者.虽然IPv4也有多播功能,但它们是可选的,不是每个路由器和主机都支持,使用IPv6时,多播是必需的,前面已经提到,IPv6还增加了一种新的服务类型“任播”,与多播类似,任播有一个发送和接收数据包的节点组,当一个数据包发到一个任播组时,只会传输到组中的一个成员,这项新功能特别适合于容错环境,如Web服务器,DNS服务器.
另一方面,在IPv6上架设VPN(虚拟私有网络)是支持QoS的,IPv6支持IPv4相同的QoS功能,包括DiffServ标记,以及新的 20位通信流字段,IPv6的第五个主要目标是VPN.新的IPsec安全协议,ESP(封装安全协议)和AH(身份验证头)是附加到IPv4的,而 IPv6内置了这些协议,这意味着在IPv6世界中建设和部署网络时,保护网络的安全将会变得更加容易.
下面用一张表简单地对比一下IPv4和IPv6,以便加深理解.
表1 IPv4与IPv6的对比
文/51CTO
XiorkFlow 这个设计器UI还是不错的,可以自动生成XML文件,只是节点和连接线如果能双击弹出窗口设置相关属性就好了,没办法,只能进行二次开发了。。:(
谁有更好的开源工作流设计器吗?
下载地址:http://www.pudn.com/downloads78/sourcecode/java/detail298487.html
其他不多述了,自己下了部署下,可以看看效果。
function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; }
.toptab { min-width:60px;/*最小宽度*/ _width:60px; /*实现min-width兼容 IE6*/ overflow: hidden;/*不出现滚动条*/ float:left;/*左浮动*/ padding:2px 6px 0 6px;/*定义元素内边框,上右下左*/ margin:0 10px 0 0;/*定义元素外边框,上右下左*/ text-align:center;/*文本居中对齐*/ height:22px; line-height:22px; /*两个高度一致,使文本上下垂直居中 */ font-size: 12px;/*文字大小*/ background-color:#ffffff;/*元素背景颜色*/ color: #333333;/*文字颜色*/ font-weight: normal; text-decoration: none;/*不出现下划线*/ }
ps:内联(display:inline;)属于行布局,其特性是在一行里进行布局,不能设置宽高
以下是宽度变化的示例,高度也可参考:
<script type="text/javascript"> function initWidth() { var bodyWidth = document.compatMode == "BackCompat"?document.body.clientWidth:document.documentElement.clientWidth; document.getElementById("Content").style.width = bodyWidth - 180; } initWidth(); if (document.attachEvent) { window.attachEvent('onresize', initWidth); } else { window.addEventListener('resize', initWidth, false); } </script>
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> <title>test</title> <LINK href="/wi/css/oa/blue/menu.css" type=text/css media=screen rel=stylesheet> <script language="javascript" src="/wi/script/prototype.js"></script> <script language="javascript" src="/wi/script/buffalo.js"></script> </head> <script language="javascript"> var endPointTop = '/wi/buffalo'; var waitingImg = '/wi/images/oa/loading.gif'; var loadingImg = '/wi/images/oa/loading.gif'; var userId = 'superadmin'; var deptId = '0001'; function test() { try { var user = Buffalo.Form.formToBean("form1", "modules.sys.Sys_user", true); var buffalo = new Buffalo(endPointTop); buffalo.remoteCall("desktopService.test", [userId,user], function(reply) { var str = reply.getResult(); alert(str); }); } catch (ex) { // alert(ex); } } </script> <body style="margin: 0; padding: 0; overflow: auto; " marginwidth="0" topmargin="0" leftmargin="0" marginheight="0"> <a href="#" onclick="test();">test</a> <form id ="form1"> <p>id:<input name="id" type="text" id="id"> name:<input name="name" type="text" id="name"> age: <input name="age" type="text" id="age"> memo: <input name="memo" type="text" id="memo"> </p> </form> </body> </html>
public class User { private int id; private String name; private int age; private String memo; public User() { } //结合数据库操作可以添加 rs.getString 、get、set 方法 }
public class desktopService { public int test(String userId, Sys_user obj) { return 1; } }
实测过程中发现,buffalo实现form表单元素绑定是一对一的,form里包含多余的元素会报错。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> <title>LeftMenu</title> <LINK href="css/menu.css" type=text/css media=screen rel=stylesheet> <script language="javascript" src="script/prototype.js"></script> <script language="javascript" src="script/buffalo.js"></script> </head>
<script language="javascript"> var endPointTop = '/${globals_sys_basename}/buffalo';//globals_sys_basename应用根目录 var waitingImg = '/${globals_sys_basename}/images/oa/loading.gif'; var loadingImg = '/${globals_sys_basename}/images/oa/loading.gif'; var userId = '$!{user.getLoginname()}'; var deptId = '$!{user.getUnitid()}'; var alreadyOpenTableId = null; var hrefBaseValue = null; //HTTP://WWW.WIZZER.CN function getUl(e) { for (var i = 0; i < e.childNodes.length; i ++) { if (e.childNodes[i].nodeName.toUpperCase() == "UL")return true; } return false; } function subMenu(e, menuId) {//动态增加下级菜单 if (getUl(e))return; try { var buffalo = new Buffalo(endPointTop); buffalo.remoteCall("desktopService.getSubMenu", [userId,menuId], function(reply) { //desktopService.getSubMenu ajax调用后台方法,传递用户名、一级栏目ID var str = reply.getResult();//返回ArrayList对象或List对象 if (str.length>0) { var ulElem = document.createElement("ul"); var temp = ""; ulElem.className = "MenuLevel2"; ulElem.ID = "MENU_" + menuId + "S"; ulElem.style.display = ""; for (var i = 0; i < str.length; i++) { temp += "<li id='MENU_"+str[i].id+"' class='level2' onclick=\"subMenu(this,'" + str[i].id + "');menuClick(this);\" ><div>"; if (str[i].ext3 != null && str[i].ext3 != "") { temp += "<img src='/$!globals_sys_basename/private/Icons/" + str[i].ext3 + "'>";//小图标 } temp += "" + str[i].name + "</div></li>"; } ulElem.innerHTML = temp; e.appendChild(ulElem); } }); } catch (ex) { } } function closeMenu() { if (alreadyOpenTableId == null) return; alreadyOpenTable = document.all(alreadyOpenTableId); if (alreadyOpenTable.childNodes.length > 1){ targetTable = alreadyOpenTable.childNodes[1]; }else{return;} targetTable.style.display = "none"; alreadyOpenTableId = null; } function menuClick(e) { var currentTableSrc = e; if (currentTableSrc.id != alreadyOpenTableId && currentTableSrc.id!=alreadyOpenTableId+"0001") closeMenu(); targetTableId = currentTableSrc.id + "S"; if (e.childNodes.length > 1){ targetTable = e.childNodes[1]; }else{targetTable=null;} if (targetTable == null)return; if (targetTable.style.display == "none") { targetTable.style.display = ''; alreadyOpenTableId = currentTableSrc.id; } else { targetTable.style.display = "none"; } } </script>
<body style="margin: 0; padding: 0; overflow: auto; " marginwidth="0" topmargin="0" leftmargin="0" marginheight="0"> <ul id=MenuUl> #foreach($obj in $list)//使用模板语言循环出第一级菜单 <li id="MENU_$!{obj.getId()}" onclick="subMenu(this,'$!{obj.getId()}');menuClick(this);"><div>#if(${obj.getExt3()})<img src="/$!globals_sys_basename/private/Icons/$!{obj.ext3}">#end $!{obj.getName()}</div> </li> #end </ul> </body> </html>
body { background: #d8edfc; font-size: 12px; font-family: 宋体; scrollbar-base-color: #dbecf8; scrollbar-arrow-color: #2a8ed1; scrollbar-track-color: #bdddf2; scrollbar-3dlight-color: #2886c5; scrollbar-darkshadow-color: #2886c5; scrollbar-face-color: #dbecf8; scrollbar-shadow-color: #dbecf8; margin: 1px; border: 3px solid #4891c6; } #MenuUl { list-style:none; margin: 0px; padding: 0px; background: #d8ebf7; } ul.MenuLevel2 { list-style:none; margin: 0px; padding: 0px; background: #d8ebf7; } .level1 { font-weight: bold; color: #005790; padding-bottom: 1px; } .level2 { font-weight: normal; color: #005790; } .level3Head { font-weight: normal; color: #2479b6; width: 100%; height: 21px; padding-left: 61px; padding-top: 4px; background: url(images/menu_bg_head.gif) no-repeat; cursor: hand; } .level33 { font-weight: normal; color: #2479b6; width: 100%; height: 21px; padding-left: 61px; padding-top: 4px; background: url(images/menu_bg_3.gif) no-repeat; cursor: hand; } .level32 { font-weight: normal; color: #2479b6; width: 100%; height: 21px; padding-left: 61px; padding-top: 4px; background: url(images/menu_bg_2.gif) no-repeat; cursor: hand; } .level1Style { /*font-size:18px; */ width: 155px; height: 24px; background: url(images/menu_btn_bg.gif) no-repeat; padding-left: 20px; padding-top: 4px; cursor: hand; } .level1SelectedStyle { width: 155px; height: 24px; background: url(images/menu_btn_bg_selected.gif) no-repeat; padding-left: 20px; padding-top: 4px; cursor: hand; } .level2Style { width: 100%; height: 20px; background: #8ec4e9; padding-left: 30px; padding-top: 4px; border-top: 1px solid #eff6fb; cursor: hand; }
这个不用教了吧?:)啰嗦一下:
参数:
wp_tag_cloud parameters:smallest=8&largest=22&number=45
设置最小字体、最大字体、总数量
应用:
若网站主题不能自动支持,可以手动编辑php文件,加入 <?php wp_cumulus_insert(); ?> 代码。
鼠标右击下面链接,选择“另存为”(仅7K大小,效果见本站首页右下):
/wp-content/plugins/wp-cumulus/tagcloud.swf
上传替换网站 /wp-content/plugins/wp-cumulus/ 下tagcloud.swf文件,即可完美支持中文。
——以下是开发者阅读,普通用户可以略过————————————————————
安装Adobe Flash CS4 后打开wp-cumulus源文件,按照上图步骤,选择“tag”文本框,不嵌入字符。
打开 C:\wp-cumulus\flash sources\com\roytanck\wpcumulus\Tag.as
源代码:
package com.roytanck.wpcumulus { import flash.geom.ColorTransform; import flash.filters.*; import flash.display.*; import flash.events.*; import flash.net.*; import flash.text.*; public class Tag extends Sprite { private var _back:Sprite; private var _node:XML; private var _cx:Number; private var _cy:Number; private var _cz:Number; private var _color:Number; private var _hicolor:Number; private var _active:Boolean; private var _tf:TextField; public function Tag( node:XML, color:Number, hicolor:Number ){ _node = node; _color = color; _hicolor = hicolor; _active = false; _tf = new TextField(); _tf.autoSize = TextFieldAutoSize.LEFT; _tf.selectable = false; _tf.antiAliasType = AntiAliasType.ADVANCED; var format:TextFormat = new TextFormat(); format.font = "微软雅黑, Arial, 黑体";//设置字体 format.bold = true; format.color = color; format.size = 16 * getNumberFromString(node["@style"]); _tf.defaultTextFormat = format; //_tf.embedFonts = true; //是否使用字符库,这个肯定要注释掉 _tf.text = node; var _loc_5:BlurFilter = new BlurFilter(5, 5, 1); _tf.filters = [_loc_5]; var _loc_6:Bitmap = new Bitmap(null, "auto", true); var _loc_7:BitmapData = new BitmapData(_tf.width, _tf.height, true, color); _loc_7.draw(_tf); _loc_6.bitmapData = _loc_7; _loc_6.scaleY = 0.15; _loc_6.scaleX = 0.15; addChild(_loc_6); _loc_6.x = (-this.width) / 2; _loc_6.y = (-this.height) / 2; _back = new Sprite(); _back.graphics.beginFill(_hicolor, 0); _back.graphics.lineStyle(0.6, _hicolor); _back.graphics.drawRect(0, 0, _loc_6.width, _loc_6.height); _back.graphics.endFill(); addChildAt(_back, 0); _back.x = (-_loc_6.width) / 2; _back.y = (-_loc_6.height) / 2; _back.visible = false; if( _node["@href"].substr(0,4).toLowerCase() == "http" ){ this.mouseChildren = false; this.buttonMode = true; this.useHandCursor = true; this.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); this.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); this.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); } } private function mouseOverHandler( e:MouseEvent ):void { _back.visible = true; _tf.textColor = _hicolor; _active = true; } private function mouseOutHandler( e:MouseEvent ):void { _back.visible = false; _tf.textColor = _color; _active = false; } private function mouseUpHandler( e:MouseEvent ):void { var request:URLRequest = new URLRequest( _node["@href"] ); var target:String = _node["@target"] == undefined ? "_self" : _node["@target"]; navigateToURL( request, target ); } private function getNumberFromString( s:String ):Number { return( Number( s.match( /(\d|\.|\,)/g ).join("").split(",").join(".") ) ); } public function set cx( n:Number ){ _cx = n } public function get cx():Number { return _cx; } public function set cy( n:Number ){ _cy = n } public function get cy():Number { return _cy; } public function set cz( n:Number ){ _cz = n } public function get cz():Number { return _cz; } public function get active():Boolean { return _active; } } }
由于本空间不支持rar文件,所以有兴趣的可以到我的CSDN地址下载:
http://download.csdn.net/source/2571076
花了一天的时间,查找了许多资料,先是官方的不支持中文,后来找到方法支持中文但是有抖动的现象,效果不好,再后来找到无抖动的swf文件,但是不开源,于是自己琢磨。。
请保留本站链接,咱都不收费而且开源了,是吧?。。呵呵
把一些注释、空格、再优化下代码,swf文件还可以压缩,这个需要你自己尝试了。。。
一般是 $ 函数冲突造成的,例如:
function $() { var results = [], element; for (var i = 0; i < arguments.length; i++) { element = arguments[i]; if (typeof element == 'string') element = document.getElementById(element); results.push(Element.extend(element)); } return results.reduce(); }
和
var $ = function (id) { return "string" == typeof id ? document.getElementById(id) : id; };
和
function $(ele) { if (typeof(ele) == 'string'){ ele = document.getElementById(ele) if(!ele){ return null; } } if(ele){ Core.attachMethod(ele); } return ele; }
等。。。。找出问题费了一定功夫。。:(
为了方便大家阅读本站分享的代码,特安装了代码高亮显示插件。
1、Auto SyntaxHighlighter
用于可视化编辑时插入代码
2、Syntax Highlighter and Code Prettifier Plugin for WordPress
用于页面显示。
——————————————————————————–
另外分享本站 安装的Wordpress插件经验。对一般的站点应该比较全,够用了吧?:)
1、Akismet 防止垃圾评论的插件,需要到官网注册key
2、Auto SyntaxHighlighter 代码高亮–可视化编辑插件(后台)
3、Syntax Highlighter and Code Prettifier Plugin for WordPress 代码高亮显示插件(前台)
4、NO Revisions 禁止Wordpress版本控制功能,实现文章编号的连续,节省KEY资源
5、Some Chinese Please! 评论必须包含中文插件
6、Watermark RELOADED 上传图片自动加水印插件
7、WP-Mail-SMTP 使用免费邮箱作为网站邮件服务器插件,教程:/?p=297
8、Auto_Save_Image 自动保存远程图片插件,并可设置去掉图片链接,自动添加水印
9、WP-PostViews 文章阅读统计插件(前台)
10、PostViews for Admin 后台显示文章统计数(后台)
11、WP-cumulus 非常炫的3D标签云插件,完美支持中文:/?p=482
12、其他:分享插件、防评论中的链接被百度搜集插件等。
WordPress 2.9.2 版本~安装了不知道啥插件,上传图片功能异常,导致上传没反应。
可能是Super Image Plugin Tools版本太低造成的?
替换一些原文件还是不能正常使用,于是升级到了Wordpress 3.0~ 搞定。
简体中文版下载地址:http://wfans.org/blog/2010/06/wordpress-3-0-chinese-version-released/
另外还安装了 Watermark RELOADED 水印插件,没出问题。
测试了下站点的注册功能,发现邮件发送不了。提示空间禁止 mail() 函数~~:(
多方查找,终于找到解决办法,现分享如下:
1、首先开通QQ的域名邮箱功能,把域名和QQ邮箱进行绑定。
详情访问:http://domain.mail.qq.com/cgi-bin/loginpage
2、安装wordpress插件:WP-Mail-SMTP
在网站后台插件里搜索Mail会找到,进行在线安装。安装完毕点setting进入设置。
3、WP-Mail-SMTP设置如下:
update options 搞定。
4、Send a test Mail
function SetCookie(name,value) { var Days = 1; var exp = new Date(); exp.setTime(exp.getTime() + Days*24*60*60*1000); document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); } function getCookie(name)//取cookies函数 { var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)")); if(arr != null) return unescape(arr[2]); return null; } function delCookie(name)//删除cookie { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval=getCookie(name); if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString(); }
Buffalo是国人开发的Ajax框架,它可以使用户在js中方便的调用java代码里的方法。
1. web.xml中配置相关servlet 如下:
<!–buffalo ajax–>
<servlet>
<servlet-name>buffalo</servlet-name>
<servlet-class>net.buffalo.web.servlet.ApplicationServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>buffalo</servlet-name>
<url-pattern>/buffalo/*</url-pattern>
</servlet-mapping>
2. 需要引入的jar包为:
加入两个jar包:buffalo-2.0.jar和commons-logging-api-1.0.4.jar(下载包里有,下载地址见文章最后)。
注:若commons-logging-api-1.0.4.jar不加入,会抛出异常。
3. 编写需要调用的业务类。
如:
1. desktopService.java
package oa.ajax; /** * Created by IntelliJ IDEA. * User: wizzer * Date: 2010-7-15 * Time: 16:08:22 * To change this template use File | Settings | File Templates. */ public class desktopService { public String getInfoCount(String userId,String depId){ return "0|1|2"; } }
4. 配置文件中配置业务类
配置文件为:buffalo-service.properties 位置在classes下
内容如下:
desktopService=oa.ajax.desktopService
多个类则配置多个: 格式 名称=业务类全名
注意:js里则通过 desktopService来代替oa.ajax.desktopService类执行其中的业务方法
到此后台代码结束
5. 在jsp中引入js文件:prototype.js 和 buffalo.js 文件
<script type=”text/javascript” src=”js/prototype.js”></script>
<script type=”text/javascript” src=”js/buffalo.js”></script>
6. 编写调用js代码
注意:helloService这个是配置文件中配置的名称
<script type="text/javascript"> var endPoint = "<%=request.getContextPath()%>/buffalo"; var buffalo = new Buffalo(endPoint); var userId= "wizzer"; var deptId = "HITS"; function getEventCount() { try { var buffalo = new Buffalo(endPointTop); buffalo.remoteCall("desktopService.getInfoCount", [userId, deptId], function(reply) { var str = reply.getResult(); var ary = str.split("|"); document.getElementById("msg").innerHTML = "(" + ary[0] + ")"; document.getElementById("mail").innerHTML = "(" + ary[1] + ")"; document.getElementById("wait").innerHTML = "(" + ary[2] + ")"; }); } catch (ex) { } } </script>
<input type=”button” value=”Buffalo远程调用” onclick=”getEventCount();”/>
消息<div id=”msg”></div>
信箱<div id=”mail”></div>
待办<div id=”wait”></div>
Buffalo ajax 最新版下载地址:http://buffalo.sourceforge.net/download.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=gb2312" /> <title>wizzer.cn</title> <style type="text/css"> <!-- * { margin:0px; padding:0px; font-family:"宋体"; font-size:12px; text-align:center; } body ul{ margin:0px auto; } #mean{ width:500px; margin:0px auto; padding:0px; } #mean li{ float:left; list-style-type:none; width:80px; padding:1px; line-height:25px; } .a{ background-color: #9DDFAA; color: #060; text-decoration: none; border: 1px solid #0C6; display: block; } .a:hover{ color: #FFFFFF; background-color: #12581A; border: 1px solid #6AFF6A; } .list{ width: 80px; } .list ul{ margin:0px auto; padding:0px; } .list li{ float: left; height: 18px; width: 80px; } .b{ width: 80px; background-color: #55BF60; line-height:18px; display: block; text-decoration: none; color: #000; filter:Alpha(opacity=70); } .b:hover{ background-color: #FFFFFF; color: #060; text-decoration: none; filter:Alpha(opacity=70); } .menu2{ height: 26px; width: 80px; cursor:hand; overflow-y:hidden; } #keai{ width:800px; height:50px; background-color:#4033D7; z-index:-1; position: absolute; left: 0px; top: 35px; } --> </style> </head> <body> <div id="mean"> <ul> <li onMouseOver="this.className='menu1'" onMouseOut="this.className='menu2'"> <a href="#">网站首页</a> <div> <ul> <li><a href="#">我的主页</a></li> <li><a href="#">我的空间</a></li> <li><a href="#">我的相册</a></li> <li><a href="#">我的日志</a></li> </ul> </div> </li > <li onMouseOver="this.className='menu1'" onMouseOut="this.className='menu2'"><a href="#">新闻公告</a> <div> <ul> <li><a href="#">我的主页</a></li> <li><a href="#">我的空间</a></li> <li><a href="#">我的相册</a></li> <li><a href="#">我的日志</a></li> </ul> </div> </li> <li onMouseOver="this.className='menu1'" onMouseOut="this.className='menu2'"><a href="#">产品信息</a> <div> <ul> <li><a href="#">我的主页</a></li> <li><a href="#">我的空间</a></li> <li><a href="#">我的相册</a></li> <li><a href="#">我的日志</a></li> </ul> </div> </li> <li onMouseOver="this.className='menu1'" onMouseOut="this.className='menu2'"><a href="#">最新推荐</a> <div> <ul> <li><a href="#">我的主页</a></li> <li><a href="#">我的空间</a></li> <li><a href="#">我的相册</a></li> <li><a href="#">我的日志</a></li> </ul> </div> </li> <li onMouseOver="this.className='menu1'" onMouseOut="this.className='menu2'"><a href="#">联系我们</a> <div> <ul> <li><a href="#">我的主页</a></li> <li><a href="#">我的空间</a></li> <li><a href="#">我的相册</a></li> <li><a href="#">我的日志</a></li> </ul> </div> </li> </ul> </div> </body> </html>
点“开始->运行”输入“iexplore.exe -nohome -extoff” 打开浏览器
首先取消锁定工具栏,禁用你安装的其他第三方工具栏..
然后打开 工具->internet选项->高级->将“SmartScreen筛选器”勾掉.
<html> <head> <title>月影</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <style> body {margin:0px;padding:0px;font-size:12px;text-align:center;} body > div {text-align:center; margin-right:auto; margin-left:auto;} .content{width:900px;} .content .left{ float:left; width:20%; border:1px solid #FF0000; margin:3px; } .content .center{float:left;border:1px solid #FF0000;margin:3px;width:57%} .content .right{float:right;width:20%;border:1px solid #FF0000;margin:3px} .mo{height:auto;border:1px solid #CCC;margin:3px;background:#FFF} .mo h1{background:#ECF9FF;height:18px;padding:3px;cursor:move} .mo .nr{height:80px;border:1px solid #F3F3F3;margin:2px} h1{margin:0px;padding:0px;text-align:left;font-size:12px} </style> <script> var dragobj={} window.onerror=function(){return false} function on_ini(){ String.prototype.inc=function(s){return this.indexOf(s)>-1?true:false} var agent=navigator.userAgent window.isOpr=agent.inc("Opera") window.isIE=agent.inc("IE")&&!isOpr window.isMoz=agent.inc("Mozilla")&&!isOpr&&!isIE if(isMoz){ Event.prototype.__defineGetter__("x",function(){return this.clientX+2}) Event.prototype.__defineGetter__("y",function(){return this.clientY+2}) } basic_ini() } function basic_ini(){ window.$=function(obj){return typeof(obj)=="string"?document.getElementById(obj):obj} window.oDel=function(obj){if($(obj)!=null){$(obj).parentNode.removeChild($(obj))}} } window.onload=function(){ on_ini() var o=document.getElementsByTagName("h1") for(var i=0;i<o.length;i++){ o[i].onmousedown=function(e){ if(dragobj.o!=null) return false e=e||event dragobj.o=this.parentNode dragobj.xy=getxy(dragobj.o) dragobj.xx=new Array((e.x-dragobj.xy[1]),(e.y-dragobj.xy[0])) dragobj.o.style.width=dragobj.xy[2]+"px" dragobj.o.style.height=dragobj.xy[3]+"px" dragobj.o.style.left=(e.x-dragobj.xx[0])+"px" dragobj.o.style.top=(e.y-dragobj.xx[1])+"px" dragobj.o.style.position="absolute" var om=document.createElement("div") dragobj.otemp=om om.style.width=dragobj.xy[2]+"px" om.style.height=dragobj.xy[3]+"px" dragobj.o.parentNode.insertBefore(om,dragobj.o) return false } } } document.onselectstart=function(){return false} window.onfocus=function(){document.onmouseup()} window.onblur=function(){document.onmouseup()} document.onmouseup=function(){ if(dragobj.o!=null){ dragobj.o.style.width="auto" dragobj.o.style.height="auto" dragobj.otemp.parentNode.insertBefore(dragobj.o,dragobj.otemp) dragobj.o.style.position="" oDel(dragobj.otemp) dragobj={} } } document.onmousemove=function(e){ e=e||event if(dragobj.o!=null){ dragobj.o.style.left=(e.x-dragobj.xx[0])+"px" dragobj.o.style.top=(e.y-dragobj.xx[1])+"px" createtmpl(e) } } function getxy(e){ var a=new Array() var t=e.offsetTop; var l=e.offsetLeft; var w=e.offsetWidth; var h=e.offsetHeight; while(e=e.offsetParent){ t+=e.offsetTop; l+=e.offsetLeft; } a[0]=t;a[1]=l;a[2]=w;a[3]=h return a; } function inner(o,e){ var a=getxy(o) if(e.x>a[1]&&e.x<(a[1]+a[2])&&e.y>a[0]&&e.y<(a[0]+a[3])){ if(e.y<(a[0]+a[3]/2)) return 1; else return 2; }else return 0; } function createtmpl(e){ for(var i=0;i<12;i++){ if($("m"+i)==dragobj.o) continue var b=inner($("m"+i),e) if(b==0) continue dragobj.otemp.style.width=$("m"+i).offsetWidth if(b==1){ $("m"+i).parentNode.insertBefore(dragobj.otemp,$("m"+i)) }else{ if($("m"+i).nextSibling==null){ $("m"+i).parentNode.appendChild(dragobj.otemp) }else{ $("m"+i).parentNode.insertBefore(dragobj.otemp,$("m"+i).nextSibling) } } return } for(var j=0;j<3;j++){ if($("dom"+j).innerHTML.inc("div")||$("dom"+j).innerHTML.inc("DIV")) continue var op=getxy($("dom"+j)) if(e.x>(op[1]+10)&&e.x<(op[1]+op[2]-10)){ $("dom"+j).appendChild(dragobj.otemp) dragobj.otemp.style.width=(op[2]-10)+"px" } } } </script> </head> <body> <div> <div id=dom0> <div id=m0> <h1>dom0</h1> <div></div> </div> <div id=m1> <h1>dom1</h1><div></div> </div> <div id=m2><h1>dom2</h1><div></div></div> <div id=m3><h1>dom3</h1><div></div></div> </div> <div id=dom1> <div id=m4><h1>dom4</h1><div></div></div> <div id=m5><h1>dom5</h1><div></div></div> <div id=m6><h1>dom6</h1><div></div></div> <div id=m7><h1>dom7</h1><div></div></div> </div> <div id=dom2> <div id=m8><h1>dom8</h1><div></div></div> <div id=m9><h1>dom9</h1><div></div></div> <div id=m10><h1>dom10</h1><div></div></div> <div id=m11><h1>dom11</h1><div></div></div> </div> </div> </body> </html>