zoukankan      html  css  js  c++  java
  • window.external的使用

    由于工作中有很多时候需要用到window.external,以前一直稀里糊涂的,今天又被人问到,于是突击学习了一下,记下备忘。
    --------------------------------------
    我们在js中可以通过window.external.myfunc()来调用浏览器提供的外部方法myfunc。可以让网页内的js脚本中能调用C++代码。


    IE的已默认实现了一些外部方法,可以参见
    1:某文章:http://www.it118.org/Specials/2e876829-483a-4216-a6ef-08a472c94297/8f8d0507-b4c8-4d92-8e35-3c88dade3a17.htm
    2:官方文档里有更多: http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/external.asp


    在嵌入了浏览器的工程中,除了IE默认提供的外部方法之外,需要网页的脚本中能调用C++代码,要实现这种交互,就必须实现脚本扩展。实现脚本扩展就是在程序中实现一个IDispatch接口,通过CHtmlView类的OnGetExternal虚函数返回此接口指针,这样就可以在脚本中通过window.external.XXX(关键字window可以省略)来 引用接口暴露的方法或属性(XXX为方法或属性名)。
    参考《实现脚本扩展》http://topic.csdn.net/u/20080116/17/5fbac468-1188-4c9c-9339-ad48edd8a4d3.html


    Firefox与Chrome也提供了external对象,例如,他们都默认的实现了opensearch的两个外部方法:
    AddSearchProvider IsSearchProviderInstalled
    Chrome下,可以在控制台输入window.external看到。
    Firefox默认提供的外部方法稍稍多一些,也可以可以通过firebug看到。


    window.external.AddFavorite这个把网站添加到浏览者收藏夹的脚本大家应该常常看过,但你还知道window.external的另外一些用法呢?由于是一些关于系统文件操作的命令,因为安全设置有些脚本会出错误.


      1.external.AddDesktopComponent 把网站作为用户的Active桌面
      语法:external.AddDesktopComponent(地址,类型[image/website],左距离,顶距离,宽度,长度)
    function j_adc(){ //例子
    window.external.AddDesktopComponent("http://www.i0713.net","website",0,0,800,600);
    }


      2.external.AddFavorite 把网站加入到用户的收藏夹
      语法:external.AddFavorite(网址,标题);
    function j_af(){
    window.external.AddFavorite(location.href, document.title);
    }


      3.external.NavigateAndFind 搜索指定网站中的某个字段
      语法:external.NavigateAndFind(文件地址,关键字,_Target)
    <script language="JavaScript">
    function j_an(){
    window.external.NavigateAndFind("http://www.i0713.net/IT/prog/find.asp",gosearch.value,"");
    }
    </script>


      4.external.ShowBrowserUI 调用语言选择窗口与收藏夹管理窗口
      语法:external.ShowBrowserUI(类型[LanguageDialog/OrganizeFavorites], null)
    <input type="button" name="Button" value="语言设置" onclick="window.external.ShowBrowserUI('LanguageDialog', null)">
    <input type="button" name="Submit2" value="整理收藏夹" onclick="window.external.ShowBrowserUI('OrganizeFavorites', null)">


      5.external.ImportExportFavorites 导入与导出用户收藏夹
      语法:external.ImportExportFavorites(导入/true 导出/false, 文件路径)
    <input type="button" name="Button" value="导入收藏夹" onClick=window.external.ImportExportFavorites(true,"http://www.i0713.net");>
    <input type="button" name="Button3" value="导出收藏夹" onClick=window.external.ImportExportFavorites(false,"http://www.i0713.net");>


      TANTOM:无忧脚本的也有类似的程序,大家可以试试,但用php实现不了接收用户传来的收藏夹资料,导入却很简单。手上有用Asp与Php来接收用户收藏夹的代码,Asp没试过不知道可不可用,PHP的试过,但只可以接到75%的收藏夹资料,挺奇怪的,有兴趣要php与asp代码的在论坛发个帖子吧。

  • 相关阅读:
    SQL游标写法代码
    关键词过滤器
    TOP4NET20107027源代码非官方
    亚马逊API之订单下载
    PHP上传大文件参数设置
    CListCtrl中的一个错误(c++)
    汇编语言数据结构
    类型为“System.OutOfMemoryException”的异常
    【javascript脚本】动态设置div的高度和宽带
    【读书笔记】串指令备注
  • 原文地址:https://www.cnblogs.com/tiger95/p/7472497.html
Copyright © 2011-2022 走看看