项目中calendar模块修改版
把项目中负责的一个模块精简修改后放在这里,以记录在css+javascript+jquery上的精进和展示现阶段的前端上的技术水准。后端简化了取数据方式,不过也还可以代表一部分的设计水准。
源码下载,部署在任意application server就好,如tomcat,可直接运行。
把项目中负责的一个模块精简修改后放在这里,以记录在css+javascript+jquery上的精进和展示现阶段的前端上的技术水准。后端简化了取数据方式,不过也还可以代表一部分的设计水准。
源码下载,部署在任意application server就好,如tomcat,可直接运行。
<script type="text/javascript">
function UnicodeToStr(str){
var re = /&#[\da-fA-F]{1,5};/ig;
var arr = str.match(re);
if(arr == null) {
return str;
}
var temp;
for(var i = 0;i < arr.length; i++){
str = str.replace(arr[i], String.fromCharCode(arr[i].replace(/[&#;]/g,"")));
}
return str;
}
alert(UnicodeToStr("%"));
</script>
悄悄的IE8/firefox/opera与IE6/7/chrome对iframe与主页面dom结构的理解产生了分歧.
在IE6/7/chrome中iframe的dom树与主页面是独立的, 因此将iframe中的节点移动到主页面中会报错.
而在IE8/firefox/opera中iframe的dom树与主页面是相关的, 因此将iframe中的节点移动到主页面中会成功.
测试代码如下
iframe.html:
<div id="testdiv">inside a iframe</div>
主页面:
<iframe id="testiframe" src="iframe.html"></iframe><br />
<div>here is main content</div>
<script type="text/javascript">
var iframe = document.getElementById("testiframe");
setTimeout(function(){
var testdiv = iframe.contentWindow.document.getElementById("testdiv");
alert(testdiv.innerHTML);
document.body.appendChild(testdiv);
document.body.innerHTML += testdiv.outerHTML;
}, 200);
</script>
首先等待200毫秒让iframe加载进来, 再验证的确取到了iframe中的内容, 然后将节点append到主页面, 然后就观察到了上面所描述的现象.
以上的分歧影响到了其他的JS库, 如JQuery, $("body").append()一样会有问题.
弥补方法则是判断浏览器类型, 然后用innerHTML绕过这个限制.
有趣的是,注释掉appendChild语句后发现, 在所有浏览器中只有firefox不支持outerHTML这个事实标准了.
本人写的第一个JQuery插件better select, 为的是提供与原生select控件一致的外观和更"正常"的功能体验.
与其他的select模拟插件不同, better select不使用div替换select本身, 只替换下拉框部分, 这样不会影响原本基于select控件的设计并且因此具有与其他原生select控件一致的外观.
在原生的select控件中, 当下拉框中条目字数过多,IE会截断,firefox会无限延伸下拉框而不是换行, better select选择进行换行, 且可定义宽度.
作为基本功能, better select实现了onchange的回调, 并额外提供对于下拉框每行的绘制回调来实现更复杂的下拉框,如含有图片和链接.
可设置的参数包括
dropDownClass: "betterselect",
selectedClass: "selected",
overClass: "over",
/*
* if width is null, the width is equal to the select component width.
*/
width: null,
/*
* if item size is larger than scrollSize, then set the ul height to maxheight
*/
scrollSize: 14,
maxheight: 252,
/*
* drawRowExtend is used to draw a row yourself.
* should return string or jQuery object which is an Li component.
* this function takes 3 parameters:
* 1. the select component
* 2. current index which is starting from 0
* 3. the plugin options as a map
*/
drawLiExtend: null,
onChangeCallback: null
附上源码和示例, 发布于MIT许可证, 基于JQuery 1.3.2, 兼容IE6/7/8, Firefox, Opera, Chrome: betterselect.zip
下一步功能:
1.模仿原生select控件,在不同位置弹出不同方向下拉框, 如在最底下就向上弹出.
2.提供选项针对select本身的模拟.
3.增加键盘支持.
新买的惠普百灵无线鼠标没有自定义左侧两个按键的驱动, 但这个世界伟人辈出, 做出了这样的软件, 它支持将鼠标的一个按键映射到53种功能之一, 其中一个是映射到自定义键盘按键, 间接达到调用任何功能的目的.
它就是X Mouse Button Control.
曾经遇到过开机还没登陆桌面就出错的这个问题,后来关了很多服务,清理了很多注册表,打了很多补丁,不知是哪个起了作用就自然解决了.
今天再次遇到这个问题.
看到日志服务中有个关于360安全卫生核心服务的记录, 又看到有DCOM某某条错. 查看出错原因是某个程序在web准备好前从web启动服务失败.
于是福如心至, 想到360安全卫士的云查杀服务可能就是罪魁祸首, 而且也能解释为什么会在登录前就出错, 因为权限很高(在服务里根本停不掉), 于是开360起来看, 发现右边的广告信息被公司网络屏蔽了, 再访问360网站, 确认也被屏蔽.
于是结果很明显, 360云查杀服务在启动的时候要访问网络, 而360网络被公司封掉, 自然就无法启动, 于是报错.
卸载360后重启, 错误消失.
从上可以看出SvcHost.ext出错的可能原因是某个服务需要访问网络, 当网络连通, 但却没有返回正确结果的时候就可能出错. 因此解决思路应该从找那些服务是启动时候就访问网络的开始.
比如windows的自动更新服务, 比如后台智能传输服务, 比如SMS服务, 然后停掉它们. 其中windows的自动更新服务出错的几率很高.
这也能很好解释为什么SvcHost.exe出错, 虽然解决方法很多, 却又没有通用方法的原因, 因为出错的服务不同.
虽然不是portlet规范中所定义的方法,但有的时候hack真的无法避免.以下方法在IBM Portal 6.1中测试通过.
先在portal(比如theme)中设置
request.setAttribute("testKey","testValue");
然后在portlet中使用
//用内部方法取得portal的http request
HttpServletRequest httpReq = com.ibm.wps.pe.pc.std.core.PortletUtils.getInternalRequest(portletRequest).getHttpServletRequest();
httpReq.getAttribute("testKey");
其实portletRequest.getAttribute(…)本身就包含很多好东西,甚至包含portal的session,只是取的方法很麻烦.
用jQuery实现的傲游百度贴吧只看某人插件, 可以连续载入下几页的过滤后数据, 点分页也可以保持过滤.
这个插件是对jQuery的第一次真正的演练, 欢迎捧场: http://bbs.maxthon.cn/viewthread.php?tid=190791.

IE6, IE7, Firefox在media="print"的时候对于position=absolute的处理迥异.
其中一个很严重的问题是IE下面,print的时候对于postion=absolute这种脱离文档流的页面会有截断现象.
如宽度过长横向截断, 又如页面最后一行或第一行截断, 如下图:

但有时候Firefox不写position=absolute反倒会只显示一页并且最后一行截断, 反而要加上这个设定才能正常.
所以切记, 不要在IE中print的时候做任何脱离文档流的设定, 如position=absolute或者float.
在Firefox中遇到问题则可尝试设定脱离文档流.
以后如果遇到这种情形也应该先排查是否属于此种情形.
同时的,在IE7/Firefox中, 在print的时候如果文档中有设定宽度超过纸张宽度,在默认的Shrink To Fit模式下,字体会缩的很小. 而在IE6下则显示为超过部分被截断.
因此解决方法显而易见应该是去除原宽度设定, 改为使用width=100%(也可以视情形而定).