用ASP来做301永久重定向

BLOG换程序了,简单地把以前的一些链接做了一个重定向(Redirect),用的是Response.Redirect,在ASP中,这种方式是302跳转:

302重定向是临时性转移,301是永久转移,很多网站都不太注意这两个跳转的区别,而搜索引擎在对302和301跳转时会进行区别对待。使用301跳转后,搜索引擎会把旧地址下原有的外部链接和数据转移到新的地址下面,而302重定向则不会如此。

在ASP中可以使用如下方法来进行301重定向:

Response.Status = "301 Moved Permanently"
Response.AddHeader "Location", NewUrl
Response.End()

可以看到301的结果如下:

原来Chrome支持::selection样式表设置

这个是用来设置被选择文字的背景色和文字颜色(就是文字高亮时的样子),例如:

Chrome支持::selection,Firefox是支持::-moz-selection,IE就啥都不支持了,不过这两个样式要分开写,像这样:

::selection{
    color:#f0d000;
    background-color:#0f581a;
}
::-moz-selection{
    color:#f0d000;
    background-color:#0f581a;
}

快有何用,Chrome不认自家东西?

最近继续用Google Reader,看到好的blog还是会继续添加RSS到Google Reader,用Chrome的时候才发现这个怪事,自家人不认自家人了:

第一步:点这个按钮:

第二步:添加到Google Reader,注意URL的参数也是正确的:

第三步:Failed了……这个时候的参数还是正确的:

这几步在Firefox下却没有任何问题,看来仅仅只有速度还不行啊,也要保证可用性才好。…

虚惊一场后,Silverlight 2 RC0这次是真的发布了

虚惊一场之后,Silverlight 2 RC0终于还是发布了。基本上没有什么大的改变,也没有什么太多新特性。新增了三个组件:

一些新的Control Skin,具体可以看这里:
Silverlight 2 Release Candidate Now Available

这里有一些Breaking changes说明,你也可以下载这个文档

相关工具下载页面

Microsoft Silverlight Tools for Visual Studio 2008 SP1
Microsoft Expression Blend 2 Service Pack 1 Preview
Windows: Silverlight 2 RC0 Developer Runtime
Mac: Silverlight 2 RC0 Developer Runtime

Silverlight 2 RC0 Released?

奇怪的是这次放出的版本居然叫RC0,不是应该到RC就结束了么?我估计也许是Adobe刚发布了Flash CS 4,把Microsoft逼急了,所以毫无征兆地发了个版本出来。

后来的事情更是证明了这个版本是急不可耐地发出来的,因为几分钟以后,官方网站上把发布RC0版本的新闻给删掉了,于是一切就像恢复到了Silverlight 2 RC0还没发布时的样子。然而开发者们总是激动的,下载链接地址早就已经遍布在网络上了:

Version 2 of the Silverlight developer runtime along with the Silverlight Tools is now available. This release candidate will give developers the chance to convert their sites from Beta 2 –Release before the final release of the runtime…

同时用两个浏览器的烦恼

Google浏览器Chrome和Firefox 3都比较喜欢用,经常是随便点一个,打开就用。于是我经常忘记自己用的是哪个浏览器,因为我很少输入网址,基本上都是靠链接一页一页地翻。看网页的时候很少有使用键盘的时候,于是麻烦跟着来了,因为我喜欢用右键菜单(我实在是很害怕网页在本窗口中打开,除非我确认当前页再也没有我感兴趣的链接了),而Chrome和Firefox在右键菜单上两个项目的先后位置有一点点差别,于是我一不小心就点错了,我点菜单的时候不会去看上面写的什么字,而是依靠我印象中的位置:

Firefox和Chrome都提供了在新标签(Open in New Tab)和新窗口(Open in New Window)中打开的功能,在Firefox中,它把在新标签中打开放在了第二个,而Chrome则放在了第一个,但是,在对于支持多Tab浏览器来说,Open in New Tab是不是用得更多一些呢?

IE也是把“Open …

难以理解的JavaScript变量作用域

在一个iframe中,有这样一段js:

var clear_btn = parent.document.getElementById('clearbtn');
clear_btn.onclick = function () {
    //...
    PSearch.clearResult(); // PSearch这个对象在该页面引用的js文件中,全局变量
    //...
};

当在我的IE 7下的时候居然会out of memory,而在clearResult中并没有干任何事情!在IE 8下的时候,却是找不到PSearch,很诡异……突然想起曾经碰到过类似的问题,于是改成这样:

var clear_btn = parent.document.getElementById('clearbtn');
var ps = PSearch; // PSearch这个对象在该页面引用的js文件中,全局变量
clear_btn.onclick = function () {
    //...
    

Mootools一个小bug

在Mootools 1.2正式版中,有一个很小很诡异的bug,一般碰不上这么bt的事情。在页面里面有iframe,并且会涉及到跨域的问题时,若在页面执行过程中改变代理脚本,在改变代理脚本的前后会出现JavaScript线程假死的情况——所有的JavaScript事件都会失去响应,而此时若还原默认的脚本设置,则又可恢复正常。后来发现问题出在Event对象中,有这么几行:

win = win || window;
var doc = win.document;
event = event || win.event;

经测试,发现在这里居然取不到win.document——拒绝访问(Permission Denied)!打印了一下win的属性,发现已经是被mootools打包后的window对象了,但不知为何里面的所有属性都是拒绝访问。直接很裸地试着直接取“document”,居然成功了!修改此段代码如下:

win = win || window;

换了个BLOG程序,给自己点动力

换了个blog程序,.net版,以前无聊的时候边学.net边写的,写了几天,出了个雏形以后又犯懒了,差不多有半年多的时间没有碰这个东西了。这个周末很无聊,便说写点东西吧,于是乎又把这个东西翻出来了,把雏形稍微整了一下,好歹有个样子了。于是一激动,索性放出来了,正好也可以给自己一点动力,继续完成这个非常不完整的程序。

有许多功能没有完成,也许你一不小心就可以碰到一个错误页面了,比如导航菜单上的“标签”,它就会直接把你带到错误页面。这只是个“非常凑合”的版本,如果您发现有写地方总是不能正常操作,比如不能正常阅读文章、不能登陆、不能发表评论、不能留言等等,非常影响您阅读本blog,请通过评论留言或者Email告诉我,我的Email地址是:fdream#live.com(请将#换成@),我将非常感谢!

一个人从头写blog程序还真是够麻烦的,尤其是边学边写,写到后来总是发现,其实我们还有更好的实现方式,改了一些实在是不好的地方,等以后功能完善了再重构吧!重构是一种美!…