开发者文档
sogouExplorer.tabs

sogouExplorer.tabs.* 对应Chrome扩展的 chrome.tabs.*( http://code.google.com/chrome/extensions/tabs.html ),目的是控制标签的操作.包括创建,修改,重新排列标签页.


目录

API参考:sogouExplorer.tabs

方法

connect

sogouExplorer.tabs.connect(integer tabId, object connectInfo)

 把脚本内容连接到指定的标签页。每一个在当前扩展所指定的标签下运行的脚本内容中的sogou.extension.onConnect事件
 将被触发。
 
 参数  
 tabId (可选 integer)      
    指定标签页的ID。
 connectInfo( 可选 object)    
 name( 可选 string )          
    将会被传入到onConnect所指定的脚本内容中。
 返回 
 ( Port ) 
    port可以用于指定的标签页中的脚本内容间的通信。port的onDisconnect事件会在标签页被关闭和标签页不存在的时候
    被触发。port的定义见SogouExplorer.extension


create

sogouExplorer.tabs.create(object createProperties, function callback)

 创建一个新的标签页。
 
 参数  
 createProperties ( object ) 
   windowId( 可选 integer ) 
    指定新创建的标签页将出现在哪一个窗口之中。默认是当前窗口。
   index( 可选 integer) 
    指定新建的标签页出现在窗口中的位置。所给的值一定要在0和窗口中标签页的总数之间。    
   url( 可选 string )          
    设定标签页默认访问的URL。一个标准的URL必须是(http://www.sogou.com ),而不是(www.sogou.com)。如果指定
    的是相对路径,那么就是相对于当前页面的这个扩展。默认值是空的标签页。
   selected( 可选 boolean )  
    是否选定这个新建的标签页。默认值是true。
 callback ( 可选 function ) 
 
 Callback方法 
    如果指定了callback中的参数,那么它应该是如下的形式:
      function(Tab tab) {...};
 tab( Tab ) 
    标签页的信息。


executeScript

sogouExplorer.tabs.executeScript(integer tabId, object details, function callback)

 将JavaScript注入到页面中。
 
 参数  
 tabId (integer)      
    给定标签页的ID,使JavaScript代码在这个标签页中运行。
 details( object) 
    将要注入的JavaScript。code或者file属性必须要指定其中的一个,但不能同时指定。
   code( 可选 string )          
    将要运行的JavaScript代码。
   file( 可选 string ) 
    指定包含JavaScript代码的文件。
   allFrames( 可选 boolean )
    如果指定了allFrames为true,那么就会将代码注入到当前页面所包含的所有frames中。默认情况下,allFrames为
    false,代码只会注入到最顶层的frame中。
 callback( 可选 function ) 
    当JavaScript代码执行完毕之后,callback将会执行。
 
 Callback方法 
    如果指定了callback,那么它的形式将如下所示:
    function() {...};


get

sogouExplorer.tabs.get(integer tabId, function callback)

 得到指定标签页的详细信息,并在callback方法中使用这些信息。
 
 参数  
 tabId ( integer )      
    给定标签页的ID。
 callback( function ) 
    当得到标签页的信息之后,callback将会执行。
 
 Callback方法 
    如果指定了callback,那么它的形式将如下所示:
    function(Tab tab) {...};
 tab ( Tab ) 
    标签页的信息。


getAllInWindow

sogouExplorer.tabs.getAllInWindow(integer windowId, function callback)

 得到指定窗口中所有标签页的详细信息,并在callback方法中使用这些信息。
 
 参数  
 windowId ( 可选 integer )      
    给定窗口的ID。默认值是当前窗口。
 callback( function ) 
    当得到窗口中所有标签页的信息之后,callback将会执行。
 
 Callback方法 
    如果指定了callback,那么它的形式将如下所示:
    function(array of Tab tabs) {...};
    tabs ( Tab类型的数组,包含了所有标签页的详细信息 )。


getSelected

sogouExplorer.tabs.getSelected(integer windowId, function callback)

 得到指定窗口中的被选择的标签页的信息。
 
 参数  
 windowId ( 可选 integer )      
    给定窗口的ID。默认值是当前窗口。
 callback( function ) 
    当得到窗口中标签页的信息之后,callback将会执行。
 
 Callback方法 
    如果指定了callback,那么它的形式将如下所示:
    function(Tab tab) {...};
 tab ( Tab ) 
    标签页的信息。


insertCSS

sogouExplorer.tabs.insertCSS(integer tabId, object details, function callback)

 将CSS注入到页面中。
 
 参数  
 tabId (可选 integer)      
    给定标签页的ID,使CSS代码在这个标签页中运行。默认值是当前窗口的当前标签页。
 details( object) 
     将要注入的CSS。code或者file属性必须要指定其中的一个,但不能同时指定。
   code( 可选 string )          
     将要注入的CSS代码。
   file( 可选 string ) 
     指定包含CSS代码的文件。
   allFrames( 可选 boolean )  
     如果指定了allFrames为true,那么就会将代码注入到当前页面所包含的所有frames中。默认情况下,allFrames为
      false,代码只会注入到最顶层的frame中。
 callback( 可选 function ) 
    当CSS代码注入之后,callback将会执行。
 
 Callback方法 
    如果指定了callback,那么它的形式将如下所示:
    function() {...};


move

sogouExplorer.tabs.move(integer tabId, object moveProperties, function callback)

 将指定的标签页移动到新的位置。
 
 参数  
 tabId (integer)      
   给定标签页的ID,使CSS代码在这个标签页中运行。默认值是当前窗口的当前标签页。
 moveProperties( object) 
   windowId( 可选 integer)          
     给定窗口的ID。默认值是当前窗口。
   index( integer ) 
     给定标签页要移动到得位置。这个值必须在0和窗口中所有标签页总数之间。
   callback( 可选 function ) 
 
 Callback方法 
     如果指定了callback,那么它的形式将如下所示:
     function(Tab tab) {...};
 tab ( Tab ) 
    标签页的信息。


remove

sogouExplorer.tabs.remove(integer tabId, function callback)

 关闭指定的标签页。
 
 参数  
 tabId (integer)      
    给定标签页的ID,默认值是当前窗口的当前标签页。
 callback( 可选 function ) 
 
 Callback方法 
    如果指定了callback,那么它的形式将如下所示:
    function() {...};


sendRequest

sogouExplorer.tabs.sendRequest(integer tabId, any request, function responseCallback)

 向指定的标签页的脚本发送一个请求,当得到了回应(response)之后callback方法将会被调用。每一个当前扩展的指定的
标签页所包含的脚本中的sogouExplorer.extension.onRequest事件将会被触发。
 
 参数  
 tabId ( integer) 
    给定标签页的ID。
 request( any )  
    任何类型的参数。
 responseCallback( 可选 function)  
   参数 
   response( any ) 
      返回的JSON数据类型,如果连接的过程中发生错误,那么将不会有任何的参数,并且错误的消息将会在
      sogouExplorer.extension.lastError保存下来。


update

sogouExplorer.tabs.update(integer tabId, object updateProperties, function callback)

 修改标签页的属性。没有在updateProperties指定的属性,将不会被修改。
 
 参数  
 tabId ( integer ) 
    给定标签页的ID。
 updateProperties ( object ) 
   url( 可选 undefined) 
     指定标签页访问的URL。
   selected( 可选 boolean) 
     指定标签页是否被选定。    
 callback ( 可选 function ) 
 
 Callback方法 
    如果指定了callback中的参数,那么它应该是如下的形式:
    function(Tab tab) {...};
 tab( Tab ) 
    标签页的信息。

事件

onAttached

sogouExplorer.tabs.onAttached.addListener(function(integer tabId, object attachInfo){...});

 每当标签页被添加到窗口的时候被触发,举例来说就是标签页在窗口之间移动的时候。
 
 参数 
 tabId( integer ) 
    标签页的ID。
 attachInfo( object ) 
   newWindowId( integer )  
     标签页移动到的新窗口的ID。
   newPosition( integer ) 
     标签页的新位置。


onCreated

sogouExplorer.tabs.onCreated.addListener(function(Tab tab){...});

 每当标签页被创建的时候触发。
   
 参数 
 tab( Tab ) 
   标签页的信息。


onDetached

sogouExplorer.tabs.onDetached.addListener(function(integer tabId, object detachedInfo){...});

 每当标签页脱离窗口的时候被触发。
 
 参数 
 tabId( integer ) 
    标签页的ID。
 detachedInfo( object ) 
   oldWindowId( integer )  
     标签页脱离的窗口的ID。
   newPosition( integer ) 
     标签页的旧位置。


onMoved

sogouExplorer.tabs.onMoved.addListener(function(integer tabId, object moveInfo){...});

 每当标签页脱离窗口的时候被触发。当移动标签页的时候,只会有一个move事件被触发,也就是用户直接移动的那个标签页的
 move事件。那些在移动过程中被迫移动的标签页并没有被触发move事
 件。并且move事件只能在同一个窗口中移动标签页的时候才被触发,不同窗口的时候请参考onDetached。
 
 参数 
 tabId( integer ) 
   标签页的ID。
 moveInfo( object ) 
   windowId( integer )  
     窗口的ID。
   fromIndex( integer ) 
     标签页的旧位置。
   toIndex( integer ) 
     标签页的新位置。


onRemoved

sogouExplorer.tabs.onRemoved.addListener(function(integer tabId, object reniveInfo){...});

 每当标签页关闭的时候被触发。
 
 参数 
 tabId( integer ) 
   标签页的ID。
 removeInfo( object ) 
   isWindowClosing( boolean )  
     当标签页被关闭的时候为true。


onSelectionChanged

sogouExplorer.tabs.onSelectionChanged.addListener(function(integer tabId, object selectInfo){...});

 每当重新选择了标签页的时候触发。
 
 参数 
 tabId( integer ) 
   被选定的标签页的ID。
 selectInfo( object ) 
   windowId( integer )  
     发生事件的窗口的ID。


onUpdated

sogouExplorer.tabs.onUpdated.addListener(function(integer tabId, object changeInfo, Tab tab){...});

 每当标签页被修改的时候触发。
 
 参数 
 tabId( integer ) 
   标签页的ID。
 changeInfo( object ) 
   提供了标签页的状态和属性变化信息。
   status( optional string)  
     标签页的状态。可以是'londing'和'complete'。
   url( optional string)  
     标签页的URL,仅当URL改变的时候才有此属性信息。
   pinned( optional boolean)  
     标签页是否固定。
 tab ( Tab ) 
    标签页的信息。


事件

Tab ( object类型 )

 id( integer ) 
   标签页的ID。这个ID在浏览器当前的session中是唯一的。
 index( integer ) 
    标签页的位置信息,index的起始值是0。
 windowId( integer ) 
    标签页所在的窗口的ID。
 selected( boolean ) 
    标签页是否被选中。
 pinned( boolean ) 
    标签页是否固定。
 url( string) 
    标签页所显示的URL。
 title( optional string) 
    标签页的title,如果标签页还在加载的过程中,那么这个属性不可用。
 faviconUrl( optional string ) 
    标签页favicon的URL,同样如果标签页处在加载的过程中,那么该属性不可用。
 status( optional string ) 
    标签页的状态,为'loading'和'complete'中的一种。


chrome有,而我们未实现的api

chrome.tabs.captureVisibleTab(integer windowId, object options, function callback)

chrome.tabs.detectLanguage(integer tabId, function callback)

chrome.tabs.getCurrent(function callback) 这个api在我们目前的架构下和tabs.getSelected行为完全一致,因此暂不实现


与chrome Tab对象的不同之处

 chrome的Tab对象中有两个属性。分别叫做incognito,和pinned。这两个属性在搜狗浏览器中都没有。
   incognito代表Tab是否处于隐私窗口。但是搜狗浏览器中的无痕浏览是一个全局属性,因此没有此属性。获取当前是否处于
   隐私模式,请用sogouExplorer.command.getPrivacyMode(function callback);
   pinned代表tab是否被固定在标签栏左侧,搜狗浏览器不提供这个功能