Firefox下"设为首页"、"加入收藏"不能用的原因及解决办法

2012-04-24  金城  3455

在给客户做网站页面时,客户要求首页上用上“设为首页”、“加入收藏”的功能,代码如下:

<a href="javascript:void(0)"onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://zblog.mycoolapp.net/')">设为首页</a>
<a href="javascript:void(0)"onclick="window.external.addFavorite('http://zblog.mycoolapp.net/','软源 - 软件开发 源码分享 技术交流')">加入收藏</a>

当我做好给他时,他又提出在firefox浏览器下这两个功能有问题不能实现的,让我去修改。经过搜索网上资料发现,以上“设为首页”、“加入收 藏”代码是IE专用代码,Firefox不支持。那有没有IE和Firefox都通用的“设为首页”、“加入收藏”代码,经过百度搜索,终于找到了方法, 先在JS代码部分加入以下JS代码:

function addCookie(){//加入收藏夹
if(document.all){
      window.external.addFavorite('http://zblog.mycoolapp.net','软源 - 软件开发 源码分享 技术交流');
}
else if(window.sidebar){
     window.sidebar.addPanel('软源 - 软件开发 源码分享 技术交流 - 编程技术 DELPHI C# PHP ASP','http://zblog.mycoolapp.net/',"");
}
}

function setHomepage(){//设置首页
  if(document.all){
     document.body.style.behavior='url(#default#homepage)';
     document.body.setHomePage('http://zblog.mycoolapp.net');
  }
  else if(window.sidebar){
       if(window.netscape){
            try{
                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
            }
            catch(e){
                alert("您的浏览器未启用[设为首页]功能,开启方法:先在地址栏内输入about:config,然后将项 signed.applets.codebase_principal_support 值该为true即可");
            }
       }
       var prefs=Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
       prefs.setCharPref('browser.startup.homepage','http://zblog.mycoolapp.net/');
  }
}

再在网页里加入以下“设为首页”、“加入收藏”代码:

<a href="javascript:void(0)"onclick="setHomepage()">设为首页</a>
<a href="javascript:void(0)"onclick="addCookie()">加入收藏</a>

具体使用时把上面代码中网站的网址和名称设为对应网站的网址和名称即可。

以上代码是针对网站主而言。如果是网站访问者,一种方法是自己手动将网站“设为首页”和“加入收藏”,其中“加入收藏”可用快捷键 Ctrl+D, 这个方法对IE,Firefox均有效。另外一种方法就是点击网站里“设为首页”、“加入收藏”链接。如果网站主的代码只针对IE,而您使用的是 Firefox,那这些链接是无效的。但如果网站主采用的是以上通用代码,那您最好先开通Firefox的“设为首页”功能,开启方法:先在地址栏内输入 about:config,然后将项signed.applets.codebase_principal_support 值该为true即可。

值得一提的是,以上IE专用代码和IE&Firefox通用代码只对IE和Firefox有效,对Opera无效,目前还没找到适用于Opera的代码。