`
zhangyaochun
  • 浏览: 2612887 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

从”设为首页“浅谈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"
	  }
0
1
分享到:
评论

相关推荐

    window.showModalDialog模式对话框和 window.open的区别

    在Web开发中,创建弹出窗口是常见的交互方式,用于显示一些额外的信息或者进行特定的操作。`window.showModalDialog` 和 `window.open` 都是JavaScript提供的两种打开新窗口的方法,但它们在功能和使用场景上有着...

    window.open最大化问题

    Window.open 最大化问题解决方案 Window.open 是 JavaScript 中的一个方法,用于打开新的浏览器窗口。然而,在实际应用中,我们经常需要将弹出的窗口最大化,以便更好地展示内容。在本文中,我们将探讨如何使用 ...

    window.open.txt

    根据提供的文件信息,我们可以深入探讨`window.open()`方法在不同浏览器环境下的特性和使用细节。 ### window.open() 方法概述 `window.open()`是JavaScript中一个非常实用的方法,它用于在一个新的浏览器窗口或...

    字符串 window.open() window.opener window.name window对象等的总结

    在JavaScript的世界里,`window`对象是全局对象,它提供了与浏览器窗口进行交互的各种方法和属性。本篇文章将深入探讨`window.open()`、`window.opener`、`window.name`以及`window`对象的一些核心概念,同时通过两...

    window.clearInterval与window.setInterval的用法.

    而`window.setInterval`和`window.clearInterval`是JavaScript中用于处理定时任务的重要API。本文将详细介绍这两个函数的使用方法以及应用场景。 #### 1. `window.setInterval` 的用法 `window.setInterval`函数...

    js弹窗并返回值(window.open方式)

    2. 在新窗口中处理用户交互后,使用`window.close`关闭窗口,并在关闭前将结果通过`window.opener`通知原窗口。 3. 原窗口需要监听`beforeunload`或`unload`事件,当新窗口关闭时,这些事件会触发,从而获取到返回值...

    window.showModalDialog以及window.open用法简介

    Window.showModalDialog 和 Window.open 用法简介 Window.showModalDialog 和 Window.open 都是 JavaScript 中的方法,用于创建新窗口或对话框,下面分别介绍它们的用法和参数。 一、Window.open() 方法 Window....

    javascript 打开页面window.location和window.open的区别.docx

    ### JavaScript打开页面window.location与window.open的区别 #### 一、概述 在JavaScript中,`window.location` 和 `window.open` 都是用来控制浏览器导航的重要API,但它们在使用场景、功能特性和行为上有显著的...

    Window.Open详解

    ### Window.open() 方法详解 #### 一、方法简介 `window.open()` 是一个在Web开发中经常被用来创建新浏览器窗口或标签页的方法。此方法是 `window` 对象的一个属性,通过调用该方法可以指定打开的新窗口的URL、...

    window.open打开新窗口参数设置

    ### window.open 打开新窗口参数设置详解 在前端开发中,`window.open()` 方法是浏览器内置的一个功能,用于在JavaScript中打开新的浏览器窗口。本文将深入探讨如何使用 `window.open()` 方法及其参数设置,帮助...

    window.location.href页面跳转的用法(区别于redirect)

    ### window.location.href页面跳转的用法(区别于redirect) #### 概述 在Web开发过程中,页面跳转是一项常见的需求。通常我们会使用`Response.Redirect`来进行页面跳转,但这种方式无法在跳转前执行客户端脚本...

    重写window.alert方法

    在JavaScript编程中,`window.alert()` 是一个内置的全局函数,用于向用户显示警告对话框,通常包含一条消息和一个“确定”按钮。这个方法在网页开发中常用于简单的信息提示,但有时开发者可能需要自定义其行为,...

    window.open最大化操作

    Window.open最大化操作 在Web开发中,我们经常需要弹出新的浏览器窗口,而在某些情况下,我们需要将这个窗口最大化以便于用户体验。那么,如何使用JavaScript的window.open方法来实现窗口的最大化呢? 首先,让...

    window.name解决跨域问题的文档

    window.name 传输技术的基本原理和步骤为: 1. name 在浏览器环境中是一个全局/window 对象的属性,且当在 frame 中加载新页面时,name 的属性值依旧保持不变。 2. 通过在 iframe 中加载一个资源,该目标页面将...

    ShowModalDialog与window.open的区别

    3. **返回值处理**:`ShowModalDialog` 支持通过 `window.returnValue` 返回值,这在处理表单提交等交互操作时非常有用。而 `window.open` 没有直接提供这样的机制,通常需要通过回调函数等方式实现。 #### 八、...

    Javascript调用C#函数示例程序

    一个在HTML中使用Javascript的window.external调用C#内函数的示例程序。该方法可应用于网页程序开发中的网页-程序沟通,例如用C#的IHTMLWindow2.execScript替换HTML默认Javascript方法使其直接与C#传参、通讯。

    window.location.hash解析

    在JavaScript编程中,`window.location.hash` 是一个非常重要的属性,它用于获取或设置当前URL的哈希值,也就是URL中“#”后面的部分。这个属性在开发网页应用时经常被用来实现页面内的导航和锚点定位。这篇博客文章...

    Javascript中封装window.open解决不兼容问题

    对window.open进行封装, 使其更好用, 且更兼容, 很多人说window.open不兼容,其实不是, 因为不能直接执行, 必须通过用户手动触发才行;看代码: 代码如下 var openWindow = function(url, options) { var str = ""; ...

    window.open父子窗口传值问题

    在Web开发中,`window.open` 是一个JavaScript函数,它用于打开新的浏览器窗口或标签页。这个函数在处理用户交互,比如点击按钮打开新页面,或者在不同窗口间传递数据时非常常见。当我们谈论“window.open父子窗口...

Global site tag (gtag.js) - Google Analytics