Monthly Archive for 三月, 2011

PHP Fatal Error重定向跳转

在前端生产环境下,我们需要error_reporting(0)来禁止对用户输出任何错误信息;与此同时,如果能在不可预见地发生Fatal errors和Parse errors的时候跳转到其他页面,而不出现空白,那就能在一定程度上保证用户体验。
我们发现,PHP的error_handlers不能用来处理Fatal errors和Parse errors,于是就有了下面这个方法。
在php.ini文件中可以找到:

; String to output before an error message.
;error_prepend_string = "html code"
; String to output after an error message.
;error_append_string = "html code"

那么我们可以把error_prepend_string或者error_append_string前面的分号去掉,把它的值设置为”<script>window.location.href=’another_page.php’;</script>”,在出错的时候使用javascript的redirect到另一个页面。
但是这种做法似乎不太优雅…正在寻找通过服务器302临时重定向的方法。

PHP SPL File Browser

俗话说不想偷懒的程序员不是好程序员。
所以为了向“好程序员”靠拢,我们要自觉地在工作中偷懒…当然不是要你偷工减料,而是要用程序员应该有的方式来“偷懒”,提高工作效率。
我所在的公司使用的PHP demo环境,出于安全方面的考虑,设置了禁止访问网站目录(列出目录文件列表),造成了我没有办法通过浏览器直接访问目录,查看到目录下的文件列表。上传了个php探针到demo服务器上,发现PHP的系列文件操作函数都被禁用了。这样我也没有办法写一段php脚本通过opendir、chdir、scandir等函数来遍历目录下的文件,输出文件列表到浏览器。
好在经过测试,发现并没有禁用PHP的SPL(SPL是Standard PHP Library的缩写)。这样我们就可以通过SPL中的DirectoryIterator来遍历目录了。
于是就有了下面这个小工具,我想可以把它叫做PHP SPL File Browser或者PHP SPL Directory Browser。它强大得放在任意子目录下都可以浏览整站目录。代码写得很乱,就不献丑了,有需要的童鞋可以发Email给我。

受doctype影响的内嵌img标签的td高度

在工作中遇到一个问题,在html5页面下,使用table布局,td包含img标签,如果td内还含有空白字符,那么td的高度就会出错,导致页面出现空白/间隙,设置了img的vertical-align:top问题依然存在。google了一下,发现stack exchange上有人早就在一年多以前发现doctype在XHTML 1.0 strict下存在该问题并有了解决方案:把空白字符去掉或者设置line-height:1px,img{display:block;}也可以。
原因是在块级元素中单个字符(包括空格)都要占用一个单行,所以块级元素至少要暂用一行的高度,把行高设置成1px就了。
http://stackoverflow.com/questions/1450274/why-td-height-not-equal-to-img-height-inside-of-it-when-doctype-is-xhtml-1

The size of block-level element (td, div, etc) if not specified will only be as big as needed, according to the space taken by its content. If specified, it will try to expand accordingly, except if the content is bigger, in which case it will expand as necessary.
In your example, the cell contains a single character (the non-breaking space), which take the size of single line. Hence, the block element must be at least 1 line-height high; it can’t assume any smaller size. This is why your height declaration was ignored.

一键禁用所有扩展——重量级的chrome扩展

今天给大家推荐一个我自己写的chrome扩展——一键禁用所有扩展

One Key Disable Plus

扩展安装地址:https://chrome.google.com/webstore/detail/ejhdjfmkegkpenillofhpmikailkjpkb

之所以写这个扩展是有原因的。作为一名前端开发者,我使用Chrome和Firefox进行调试,同时装了很多功能强大的扩展/插件。然而我发现在使用Chrome进行调试的过程中,很多插件都会往页面加入一些额外的标签,这样就不利于我们调试和查看页面源代码。我需要一个能够一键禁用所有扩展的插件。后来经过用户调研,发现作为前端开发者和发烧友,可能还需要方便地对扩展进行逐个关闭、开启、乃至卸载的操作,于是就有了这个扩展。

现在这个扩展支持一键禁用/开启全部扩展展,也支持扩展的逐个禁用、开启、右击卸载扩展,支持中英两种语言。

大家有什么功能上的需求还可以与我联系,欢迎交流。

jQuery图片对比插件jPictureCompare

发布一个自己写的基于jQuery的图片比较插件:jPictureCompare。高手们就当看看笑话吧……是模仿网易新闻频道报道的《日本地震前后对比图像》做的(http://news.163.com/special/ribendizhen_duibi/)鼠标移动图片上滑动观看。

调用依然很简单,只需一行,可能我对需求考虑得还不够周到…

$(function(){
        //参数:图片的尺寸
	$('.jPictureCompare').jPictureCompare({'width': 940,'height': 529,});
})

demo在此

下载地址