IE9面世有一段时间了,有一些开发方法可能大家不熟悉,在这里和所有的Zoomla!逐浪CMS用户分享一下开发技巧。
比如我们要实现这样的效果:

您所在的用户组无法下载或查看附件
用户可以点击将网站加入开始菜单,并实现下图的展示,是不是很IN?

您所在的用户组无法下载或查看附件
来,让我们一起来做!
首先我们来介绍一下IE9 pinned sites 固定网页的技术。
微软新发布的IE9浏览器一大特性就是支持pinned sites,简单来说就是把网页嵌入到Windows的工具条上,并提供一系列的快捷操作。
1. 检测pinned sitesIE提供了一个API接口函数,可以直接判断页面是否被pinned到了任务栏上,msIsSiteMode(),使用方法如下:
function testSiteMode(){
try{
if(window.external.msIsSiteMode()){
//已经是pinned site了
alert("on SiteMode");
}else{
//没有pinned
alert("not on SiteMode");
}
}catch(ex){
//不支持site mode的浏览器
alert("Site Mode is not supported.");
return;
}
}
开发者可以使用这种方式来引导用户把页面pinned到了任务栏上,提供更便捷的使用。但这种方法测试出一个问题,就是如果在任务栏上点击一个已经被pinned的网站,在弹出的IE9窗口中新建tab,再访问一个没有被pinned过的网站,则浏览器会误认为该页面已经pinned了。不过我自己都觉得这bug无所谓,而且微软的文档写的也是这个意思:The msIsSiteMode method returns a Boolean value that returns true if the window was launched as a pinned site; otherwise, false. 它判断的是页面是否从一个pinned site启动的,而不是这个网站是否已经被pinned了。
另外,不能直接使用以下方式来判断浏览器是否支持pinned site,IE9也会返回false。这个问题很纠结,但它就是这样的,没办法,只能使用上面提到的try/catch模式,不过据说正式版会修复这个问题。
function testSiteMode2(){
if(window.external.msIsSiteMode){
//这个分支走不到,永远都是else那个分支,IE9也一样
if(window.external.msIsSiteMode()){
alert("on SiteMode");
}else{
alert("not on SiteMode");
}
}else{
//不支持site mode的浏览器
alert("Site Mode is not supported.");
return;
}
}
IE9还提供了一个接口,可以通过js将页面添加到开始菜单中,msAddSiteMode(),使用方法如下(假设页面中有一个<button>):
function addWebApp() {
// Add to start menu
try {
window.external.msAddSiteMode();
}catch (ex) {
// Site Mode not supported.
}
}
<button id="btnAddWebApp">Add to Start Menu</button>
点击这个按钮就会弹出对话框,提示将页面添加到开始菜单。
好了,说这么多没用,
如何实现Zoomla!逐浪CMS官网的效果呢?
我们已经做好了,预览页:
http://ad.zoomla.cn/ad/141/插件下载地址:
http://ad.zoomla.cn/ad/141/1th_141.rar将它集成到您的网站中去吧,逐浪CMS给您带来更多精彩!