当前位置: 代码迷 >> Web前端 >> 从”设牵头页“浅谈window.external(ps各大网站首页处理的方式)
  详细解决方案

从”设牵头页“浅谈window.external(ps各大网站首页处理的方式)

热度:479   发布时间:2012-09-05 15:19:35.0
从”设为首页“浅谈window.external(ps各大网站首页处理的方式)

最近觉得还是谈一个老话题--------页面中调用window.external象的一些api进行例如“加入收藏”或者“设为主页”等操作

?

其实如果你够留意官方文档的话,你会发现这样一句话:

?

Allows access to an additional object model provided by host applications of the Windows Internet Explorer components.

?

所以就存在一个很大的问题-------兼容性?当然你能在各种社区里面看到兼容ff的设为首页或者加入收藏的代码。当然还有一些很“牛X”的网站你一打开就给你谈加入收藏夹和各种植入的广告。。。oh。。。。。头疼关之。

?

?

  • 先认识一下window.external官方提高的文档中包含的部分methods
  1. AddChannel
?? ? --------------Obsolete.Presents a dialog box that enables the user add the specified channel,or to change the channel URL,if it is already installed

?? ? 2. AddFavorite?

?? ? --------------Prompts the user with a dialog box to add the specified URL to the Favorites list

window.external.AddFavorite(sURL[,sTitle])
?
?? ?参数有两个第一个是URL地址(非空参数),第二个是收藏的标题(这个可选参数)

???
window.external.AddFavorite(location.href,document.title);//IE下将当前浏览器地址作为收藏地址

?

我以前在support.mozilla上面看到兼容代码

?

?

function addfavorite(){
      if(document.all){
           window.external.addFavorite('http://www.baidu.com','百度');
      }else if(window.sidebar){
           window.sidebar.addPanel('百度','http://www.baidu.com','') ; 
     }
}

?当然你可能不是很属性sidebar里面的一些api,不要着急我也给你放出来:

?

?

window.sidebar.addPanel(title,contentURL,customizeURL)

注意一下:第3个参数设置为空字符串是必要的?

?

当然如果你对火狐比较熟悉的话你应该知道ctr +d也能实现操作

?

?

英文官方参考文档http://msdn.microsoft.com/en-us/library/ms535246.aspx

?

?

下面的这个设为主页的方法是各个大型门户多在采用的api

?

?

function SetHome(obj){
     try{
           obj.style.behavior = 'url(#default#homepage)';         
           obj.setHomePage('http://');
     }catch(e){
          if(window.netscape){
                 try{
                       netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
                  }catch(e){
                        alert("此操作被浏览器拒绝!\n请在浏览器地址栏输入“about:config”并回车\n然后将[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://');
           }
        }
}
ps:如果你善于发现的话你会发现百度的首页是这样处理设为主页的
原理就是判断浏览器如果不是ie就display:none;-----------这样的处理方式有点。。。。
<a id="sh" onclick="this.setHomePage('http://www.baidu.com')" href="http://utility.baidu.com/traf/click.php?id=215&amp;url=http://www.baidu.com" onmousedown="return ns_c({'fm':'behs','tab':'homepage','pos':0})">把百度设为主页</a>
       isIE=n.userAgent.indexOf("MSIE")!=-1&&!window.opera,
	sh=d.getElementById("sh");  //sh为a标签的id
	if(isIE&&sh&&!sh.isHomePage("http://www.baidu.com")){
	  sh.style.display="inline"
	  }
  相关解决方案