在IE比较简单,大家都知道用setHomePage来设置,懒人写法:
<a href="#setHomePage" onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.aoao.org.cn');return false;">Set HomePage</a>
IE的结束了没?当然没有,其实M$还提供了一个神奇的接口给我们:isHomePage,它是用来干啥呢?它是用来检查一下IE的首页是不是你的,这样我们就可以做设为首页为后就不再显示“设为首页”的效果了。挖哈哈,这里有rank同学写的现成代码,不过我修改了两下,只是写法不同,跟悄悄的加入了广告。
<a href="/setHomePage" id="setHomePage">设为首页</a>
<!--[if IE]>
<script type="text/javascript">
(function(){
var el=document.getElementById('setHomePage'),url='http://www.aoao.org.cn/',isHp=false;
el.style.behavior='url(#default#homepage)';
function check(){
try{
isHp=el.isHomePage(url);
}catch(exia){}
if(isHp){
//el.style.visibility='hidden'
/*AD*/el.innerHTML="《Web标准设计》雷人进行时";
el.href="http://www.baidu.com/";/**/
el=null;url=null;isHp=null;check=null;
}else{
el.onclick=function(){
try{
this.setHomePage(url);
check();
return false;
}catch(exia){return true}
}
}
}
check();
})();
</script>
<![endif]-->
在inline的情况下,条件注释还是比较帅滴,可能你会问,为什么不把a也放在脚本里输出呢? 其实,我们也可以解决其他浏览器的问题。
Firefox可没有现成的接口可以实现哦,但是,牛人们还是找出来解决方案,看一下Yahoo!的解决方案吧?

囧rz,被雷到的同学自觉举手,我用到这样久的Firefox 还不知道怎样设,试了半天,原来是把链接拖到工具栏的小房子上面,就可以设为首页。
还有好多浏览器,这时我们要派出终极解决方案。写帮助 -_-b ,好了,不会写的同学可以去抄一下yahoo的帮助。
那除了IE怎样识别是否被设为首页呢?可以写 cookies 或者用服务器来记,而有没有必要就看具体的应用了。
其实我们不一定要一直显示设置首页,比如用document.referrer发现是从搜索或者XX过来的,也许显示成收藏会更适合,像Yahoo!的首页,看到广告的机会比看到设为首页的机率高多了,大家自己把握吧。
兼容所有浏览器收藏全攻略:
- IE用
window.external.addFavorite - Win的其他浏览器提示使用ctrl+D
- Mac的浏览器提示使用command+D


共有 8 条评论
确实被Yahoo!的’Drag the “Y!” and drop it onto the “House” icon’雷到了
感叹下思维定势….
哈哈,好,想法不错!
雷归雷,但是想法不错。
这个方法不错
终于找到你的博客了…累死我了
应该不难找吧!搜索aoao就搞定,^_^
这篇日志在ie8中 code内容没有换行,容器被撑破
回头我找个IE8研究一下。