sogouExplorer.contextMenus系列api尚未完整实现,目前只实现了为扩展本身添加菜单的功能。部分用法将以实例代码的形式展现给大家。
API
!!!contextMenu api目前未完全实现,只能为扩展添加菜单,还不能给页面添加右键菜单。具体用法请见示例代码!!!
方法
create
- integer sogouExplorer.contextMenus.create(object createProperties, function callback)
- 创建一个菜单项. 注意,如果有错误发生,需要等到回调函数被调用时才能检测到 (具体信息在
- sogouExplorer.extension.lastError中).
- 参数
- createProperties ( object )
- type ( 可选 string )
- 菜单的类型可以是'normal', 'checkbox', 'radio', 或者 'separator'. 默认为 'normal'.
- title ( 可选 string )
- 菜单上的文字,除非type是'separator',否则必须要有这一项.
- checked ( 可选 boolean )
- 用于设置checkbox或radio菜单的默认选中状态。为true则默认选中,为false则默认不选中.
- contexts ( 可选 string数组 )
- 一个菜单项需要加载到的上下文环境的列表. Legal values are: 'all', 'page', 'selection', 'link',
- 'editable', 'image', 'video', and 'audio'. Defaults to ['page'].
- onclick ( 可选 function )
- 点击菜单时调用的回调函数
- 参数
- info ( OnClickData )
- 关于菜单项和点击时上下文(在何种菜单中被点击)的信息Information about the item clicked and the
- context where the click happened.
- tab ( Tab )
- 点击发生时当前的Tab信息
- parentId ( 可选 integer )
- 菜单项的父菜单项的id.指定此项将会让新添加的菜单项变为一个之前添加的菜单项的子菜单
- 项。
- documentUrlPatterns ( 可选 string 数组 )
- 只对符合指定的URL Patterns(见 MatchPatterns)的页面添加菜单(对frame有效)。
- targetUrlPatterns ( 可选 string 数组 )
- 和documentUrlPatterns类似, 此属性让你对img/audio/video标签的src属性进行匹配,并对符合规则的添加菜单
- 项。
- icon (可选 object)
- 菜单的图标,icon对象可用path或imageData两种方式指定
- imageData( 可选 ImageData )
- 图片的像素参数,必须是ImageData这个object。
- (可以参考canvas这个标签)
- path( 可选 string )
- 所要显示的图片的相对路径。
- callback ( 可选 function )
- 当菜单项被创建时会被调用。如果创建失败,则详细的错误信息将被保存在sogouExplorer.extension.lastError中。
- 返回值
- ( integer )
- 新建菜单项的id
- 回调函数
- 如果你指定了callback参数,那么回调函数的格式应如下:
- function() {...};
remove
- sogouExplorer.contextMenus.remove(integer menuItemId, function callback)
- 删除一个菜单项.
- 参数
- menuItemId ( integer )
- 想删除的菜单项的id
- callback ( 可选 function )
- 菜单项被删除后调用
- 回调函数
- 如果你指定的callback参数,那么回调函数的格式应如下:
- function() {...};
removeAll
- sogouExplorer.contextMenus.removeAll(function callback)
- 删除本扩展添加的所有菜单项
- 参数
- callback ( 可选 function )
- 删除成功后调用
- 回调函数
- 如果你指定的callback参数,那么回调函数的格式应如下:
- function() {...};
update
- sogouExplorer.contextMenus.update(integer id, object updateProperties, function callback)
- 更改一个之前添加的菜单项的信息
- 参数
- id ( integer )
- 需要更改的菜单项的id
- updateProperties ( object )
- 需要更改的信息,和create中的createProperties相同
- type ( optional string )
- title ( optional string )
- checked ( optional boolean )
- contexts ( optional array of string )
- onclick ( optional function )
- parentId ( optional integer )
- 注意: parentId不能设为自己的子孙菜单项.
- documentUrlPatterns ( optional array of string )
- targetUrlPatterns ( optional array of string )
- callback ( optional function )‘’‘
- 当更改成功时调用
- 回调函数
- 如果你指定了callback参数,那么回调函数的格式应如下:
- function() {...};
数据类型
- OnClickData
- ( object )
- 菜单被点击时的数据
- menuItemId ( integer )
- 被点击的菜单项的id
- parentMenuItemId ( optional integer )
- 被点击菜单项的父菜单项的id,如果有父菜单项的话
- mediaType ( optional string )
- 'image', 'video', 或 'audio'之一,如果右键菜单是在这些元素上被打开的话,否则没有
- linkUrl ( optional string )
- 如果是在链接上点击右键菜单,linkUrl为该链接的Url
- srcUrl ( optional string )
- 如果点击右键菜单的元素有src属性的话,srcUrl为该属性的值
- pageUrl ( string )
- 点击菜单时,当前页面的URL.
- frameUrl ( optional string )
- 如果点击右键菜单的元素是在一个frame中,frameUrl是该frame的url
- selectionText ( optional string )
- 点击右键菜单时选中的文字
- editable ( string )
- 标识点击右键菜单的元素是否可更改 (text input, textarea等等.).
示例代码
添加contextMenu
- var menuDescs = [
- { title: "分享到人人", icon: "renren.png", name: "renren" },
- { title: "分享到搜狐微博", icon: "sohu.ico", name: "sohu" },
- { title: "分享到新浪微博", icon: "sina.png", name: "sina" },
- { title: "分享到腾讯微博", icon: "tencent.png" , name: "tencent" },
- { title: "分享到qq空间", icon: "qzone.png" , name: "qzone" }
- ];
- for (var index in menuDescs)
- {
- var menu = menuDescs[index];
- var createProperties = {
- type: "normal",
- title: menu.title,
- contexts: ["mainframe"],
- icon: { path: menu.icon },
- onclick: function(info, tab){ alert("info: " + JSON.stringify(info) + "\ntab: " +
- JSON.stringify(tab));}
- };
- var menuid = sogouExplorer.contextMenus.create(createProperties);
- }
修改ContextMenu
- sogouExplorer.contextMenus.update(menuid,
- { title: "新菜单名称", contexts: ["mainframe"], parentId: 0 },
- function() {alert("update callback function called");});
API参考:sogouExplorer.contextMenus
方法
create
integer sogouExplorer.contextMenus.create(object createProperties, function callback)
- 创建一个新的context menu。
- 参数
- creatProperties( object )
- type ( 可选 string )
- menu item的类型。可以使'normal', 'checkbox', 'radio', 'separator'中的一个。默认设置是'normal'。
- title( 可选 string )
- 在item中显示出来的文字。除非你将type设置成separator,否则必须要指定title这项。
- checked( 可选 boolean )
- 设置checkbox和radio的初始状态。选中某项就将其设为true,反之为false。
- contexts( 可选 array of string )
- 列举menu item的出现的上下文环境。可以设定的值有 'all', 'page', 'selection', 'link', 'editable',
- 'image', 'video', 'audio'。默认值是'page'。
- onclick( 可选 function )
- 设置一个方法,每当menu item被点击的时候触发。
- 参数
- info( OnClickData )
- 一些关于item被点击后的信息,以及点击操作发生的上下文信息。
- tab( Tab )
- 点击操作发生的标签页。
- parentId( 可选 integer )
- 当前menu item的父亲的ID。
- documentUrlPatterns( 可选 array of string )
- 指定了这个参数之后,只有当网页的URL与设置的URL匹配的时候,menu item才有效。
- targetUrlPatterns( 可选 array of string )
- 与documentUrlPatterns基本相同,但targetUrlPatterns可以通过指定img/audio/video的src以及anchor的
- href来设定。
- callback( 可选 function )
- 每当menu item被创建的时候,该方法就会被触发。如果在此过程中发生了错误,详细的信息会出现在
- sogouExplorer.extension.lastError中。
- 返回值
- ( integer )
- 新创建的menu item的ID。
- Callback方法
- 如果指定了callback,那么它应该如下所示:
- function() {...};
remove
sogouExplorer.contextMenus.remove(integer menuItemId, function callback)
- 删除一个menu item。
- 参数
- menuItemId( integer )
- 需要删除的menu item的ID。
- callback( 可选 function )
- 每当menu item被删除的时候触发该方法。
- Callback方法
- 如果指定了callback,那么它应该如下所示:
- function() {...};
removeAll
sogouExplorer.contextMenus.removeAll(function callback)
- 删除当前扩展所创建的所有menu items。
- 参数
- callback( 可选 function )
- 每当删除完毕的时候,该方法被触发。
- Callback方法
- 如果指定了callback,那么它应该如下所示:
- function(){...};
update
sogouExplorer.contextMenus.update(integer id, object updateProperties, function callback)
- 更新一个menu item的信息。
- 参数
- id( integer )
- 希望进行操作的menu item的ID。
- updateProperties( object )
- 需要更新的属性及其新值。
- type( 可选 string )
- title( 可选 string )
- checked( 可选 boolean )
- contexts( 可选 array of string)
- onclick( 可选 function )
- parentId( 可选 integer)
- 你不能将parentId设置成它自己的孩子的ID。
- documentUrlPatterns( 可选 array of string)
- targetUrlPatterns( 可选 array of string)
- callback ( 可选 function )
- 当更新操作完毕之后,该方法被触发。
- Callback方法
- 如果指定了callback方法,那么它应该如下所示:
- function() {...};
类型
OnClickData
( object )
- 当menu item被点击的时候传递的信息。
- menuItemId( integer )
- 被点击的menu item的ID。
- parentMenuItemId( 可选 integer )
- 被点击的menu item的父亲的ID。
- mediaType( 可选 string )
- 如果对于menu item的操作是从'image', 'video', 'audio'进行的,那么mediaType就是这些值中的一个。
- linkUrl( 可选 string )
- 如果元素的类型是link,那么linkUrl代表其中的URL。
- srcUrl( 可选 string )
- 代表元素的src中的URL。
- pageUrl( string )
- 点击操作所发生的页面的URL。
- frameUrl( 可选 string )
- 如果点击操作发生在某个frame中,那么frameUrl就代表这个frame的URL。
- selectionText( 可选 string )
- 选中的文字。
- editable( string )
- 判断element是否可以被编辑(text input, textarea等)
与chrome的不同点
createProperties中contexts中增加mainframe,代表为扩展图标本身添加右键菜单(chrome不支持为扩展图标增加菜单)增加icon属性,icon属性可包含两个属性path和imageData, imageData可以传入一个HTML5的ImageData对象,path则表示图标文件的相对路径(根目录为该扩展的根目录)