最近觉得还是谈一个老话题--------页面中调用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
- 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&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" }