关于 XSS 防范的一些思考

标签:HTML, JavaScript

最近在看一些 web 安全相关的文章,大部分都有系统和完善的解决方案,然而 XSS(Cross-site scripting)攻击相关的资料却很杂乱,甚至连 HTML 实体转义能解决哪些地方的 XSS 攻击都说不清。
于是在翻了一堆资料后,觉得还是把自己对它的一些思考记录下来吧。

原生应用 vs HTML 5

标签:HTML, JavaScript, iOS开发

这几个月都在开发知乎日报的后端,让我对移动应用的开发有了更多的认识。

简单来说,我以前一直都认为原生应用才是王道,现在则觉得 HTML 5 才是未来。

本博客换新主题啦~

标签:HTML, CSS

最初做这个博客时,就想找款涂鸦风格的主题,结果最后连名字都叫Doodle了…
虽说很喜欢koi这个主题,但我毕竟经常需要贴代码,而原主题太窄,导致阅读比较困难,于是萌生了制作一款适合宽屏的主题的想法。
耗时一天多,这款新主题终于面世了;然后又花了一天,变成了现在这样。名字没想好,暂时叫null吧。虽说还有些细节需要调整,不过我已经迫不及待地放上来测试了。
借鉴了不少东西,做的过程中获得了不少感悟,于是记录下设计时的过程吧。

为视网膜显示屏优化网页上的图片

标签:HTML, JavaScript, iPhone, CSS

说起iPhone 4带来的革新,retina display绝对是最吸引眼球的一项,以至于我现在看电脑的显示屏时,都能看到满屏幕的像素点了⋯

正是依赖这视网膜显示屏,iPhone 4的分辨率达到了640×960 pixels;不过为了保持向下兼容性,它采用的仍然是320×480 points。
也就是说,在不进行缩放的情况下,显示普通图片时,它会用4个像素来显示图片中的1个像素;而在显示retina图片时,每个像素都对应图片中的1个像素。
如此一来,老的应用无需修改就可以在iPhone 4上运行了——虽然显示效果差了点,但是不会出现只有左上角那1/4的区域有内容的情况。

在用iOS SDK开发iOS应用时,只要将图片名加上“@2x”后缀,就能让支持retina display的设备自动显示这个解析度更高的图片。
但Safari等使用UIWebView的应用在展示图片时,却无法利用这个特性,因为这样可能会造成大量没必要的HTTP请求。
既然不能自动实现,那就只能手动来弄了。原理很简单,准备2种图片,当检测到支持retina display时,就显示大图,然后把图像的长宽各缩小一半即可。

HTML5 Canvas简易时钟

标签:HTML, JavaScript

今天下午闲得无聊,就学了下Canvas,然后捣鼓出一个时钟,顺便就放这了。
由于各种浏览器对文本的处理有些差异,因此我就只管Chrome了,用其他浏览器的自己看着办吧…

发现iframe搭配书签的一个用法

标签:HTML

今天在用Gmail里的Google Talk时突然注意到一个现象:打开聊天窗口后,在收件箱和Buzz之间切换时,聊天窗口并不会关闭。

懂HTML的都知道,这应该是采用了框架结构,使得打开新的链接不会覆盖当前窗口,而只是更新其中一个iframe。

这对于需要使用音乐播放器之类的网站是很有用的,可它有个弊端:不会显示新页面的URL。常逛猫扑的都知道,猫扑大杂烩就用了框架结构,以至于打开新帖,地址栏显示的还是老帖的URL。

不过Gmail很巧妙地使用了书签来处理URL不变的情况:
https://mail.google.com/mail/?shva=1#inbox
https://mail.google.com/mail/?shva=1#buzz

“Entity 'nbsp' not defined”的解决办法

标签:HTML

今天在测试博客的wap页面时,突然遇到了解析失败的错误提示:Entity 'nbsp' not defined。

于是我就纳闷了, 不是空格么,怎么这个玩意也没定义?在网上搜了下,发现了一篇《Webkit: Entity ‘nbsp’ not defined – Convert HTML entities to XML》,里面提到了 是HTML实体,但XHTML用的是XML规则,它只定义了&、>和<这3个命名实体。
因此正确地方法是使用Unicode character code,也就是 。其他的字符转换可以看该文列出的表格。

此外,HTML也是有 的,因此直接把 改成 不会有兼容性问题。

采用HTML 5别忘了CSS Reset

标签:CSS, HTML

今天在测试博客的主题时,发现Chrome下显示得好好的,但是Firefox 3.5下却一团糟,让我非常无语。当初采用HTML 5,本来就不想支持IE的,没想到连Firefox都败下阵来,这也太囧了吧。

检查了下CSS后,发现那些新的HTML元素居然都是display: inline的,于是加了这行代码,问题解决:
header, footer, nav, section, article {display:block;}

顺便测试了一下Opera 10.5,发现也存在这个问题,看来要采用HTML 5,别忘了使用HTML 5的CSS Reset。

浏览器HTML5兼容性测试

标签:HTML

刚发现了一个HTML5兼容性测试的网站,将自己机子上有的浏览器都测了一遍,发现Chrome果然是最高的,通过了160项中的137项。Opera 10.51和Firefox 3.5.8分别是102和100,IE 6只有11。

用script的defer属性加快载入页面速度

标签:HTML, JavaScript

在HTML 4的时代,IE为script元素独创了defer属性,这使并行加载和延迟运行变得简单,但却不符合W3C规范。
而今HTML 5也为script元素新增了defer和async这2个属性,于是有必要再研究一下。

« 看看还有什么好玩意