This page was saved using WebZIP 7.0.3.1030 offline browser on 12/24/13 11:31:36.
Address: https://crxdoc-zh.appspot.com/extensions/input.ime.html
Title: chrome.input.ime - Google Chrome 扩展程序开发文档(非官方中文版)  •  Size: 132450

chrome.input.ime

描述 使用 chrome.input.ime API 为 Chrome OS 实现自定义的输入法,它允许您的扩展程序处理键盘输入、设置候选内容及管理候选窗口。
可用版本 从 Chrome 21 开始稳定支持。
权限 "input"

清单文件

您必须在扩展程序的清单文件中声明 "input" 权限才能使用输入法 API。例如:

{
  "name": "我的扩展程序",
  ...
  "permissions": [
    "input"
  ],
  ...
}

例子

如下代码创建一个将输入字母转换为大写的输入法:

var context_id = -1;

chrome.input.ime.onFocus.addListener(function(context) {
  context_id = context.contextID;
});

chrome.input.ime.onKeyEvent.addListener(
  function(engineID, keyData) {
    if (keyData.type == "keydown" && keyData.key.match(/^[a-z]$/)) {
      chrome.input.ime.commitText({"contextID": context_id,
                                   "text": keyData.key.toUpperCase()});
      return true;
    } else {
      return false;
    }
  });

有关使用该API的一个例子,请参见基本的 input.ime 示例。有关其他例子以及查看源代码的帮助,请参见示例

chrome.input.ime 参考

类型

KeyboardEvent

参见 http://www.w3.org/TR/DOM-Level-3-Events/#events-KeyboardEvent

KeyboardEvent 的属性

type ( enum of "keyup", or "keydown" )

"keyup"(按键弹起)或 "keydown"(按键按下)。

requestId ( string )

请求标识符。

key ( string )

按下的按键值。

code ( string )

按下的物理按键的值,不受当前键盘布局或组合键状态的影响。

altKey ( optional boolean )

是否按下了 Alt 键。

ctrlKey ( optional boolean )

是否按下了 Ctrl 键。

shiftKey ( optional boolean )

是否按下了 Shift 键。

capsLock ( optional boolean )

Caps Lock 键是否启用。

InputContext

描述输入上下文。

InputContext 的属性

contextID ( integer )

该属性用来指定文本框操作的目标,一旦接收到 onBlur 事件该标识符就不再有效。

type ( enum of "text", "search", "tel", "url", "email", or "number" )

该文本框编辑的值的类型:文本、数字、URL 等。Type of value this text field edits, (Text, Number, URL, etc)

MenuItem

在语言菜单中,输入法用来与用户交互的菜单项。

id ( string )

传递给回调函数的字符串,用来引用这一菜单项。

label ( optional string )

这一菜单项在菜单中显示的文本。

style ( optional enum of "check", "radio", or "separator" )

代表这一菜单项是否是:"check"(复选)、"radio"(单选)或 "separator"(分隔符)的枚举值。在分隔符之间的单选按钮将认为是同一组的。

visible ( optional boolean )

表示这一菜单项是否可见。

checked ( optional boolean )

表示这一菜单项是否已勾选。

enabled ( optional boolean )

表示这一菜单项是否已启用。

方法

setComposition

chrome.input.ime.setComposition(object parameters, function callback)

设置当前的候选内容。如果当前扩展程序没有独占当前输入法,该方法将会失败。

参数

parameters ( object )

属性

contextID ( integer )

需要设置候选本文的上下文标识符。

text ( string )

要设置的文本。

selectionStart ( optional integer )

选定内容在文本中的起始位置。

selectionEnd ( optional integer )

选定内容在文本中的结束位置。

cursor ( integer )

光标在文本中的位置。

segments ( optional array of object )

片段列表以及与它们相关的类型。

每一个对象的属性

start ( integer )

当前片段开始的字符索引。

end ( integer )

当前片段结束后的字符索引。

style ( enum of "underline", or "doubleUnderline" )

如何呈现这一片段。

callback ( optional function )

当操作完成时调用,传递一个布尔值,表示文本是否被接受。如果调用失败,将设置 runtime.lastError

如果您指定了 callback 参数,它应该指定一个如下形式的函数:

function(boolean success) {...};

success ( boolean )

clearComposition

chrome.input.ime.clearComposition(object parameters, function callback)

清除当前的候选内容。如果当前扩展程序没有独占当前输入法,该方法将会失败。

参数

parameters ( object )

属性

contextID ( integer )

需要清除候选内容的上下文标识符。

callback ( optional function )

当操作完成时调用,传递一个布尔值,表示文本是否被接受。如果调用失败,将设置 runtime.lastError

如果您指定了 callback 参数,它应该指定一个如下形式的函数:

function(boolean success) {...};

success ( boolean )

commitText

chrome.input.ime.commitText(object parameters, function callback)

将提供的文本提交至当前输入。

参数

parameters ( object )

属性

contextID ( integer )

需要提交文本的上下文标识符。

text ( string )

要提交的文本。

callback ( optional function )

当操作完成时调用,传递一个布尔值,表示文本是否被接受。如果调用失败,将设置 runtime.lastError

如果您指定了 callback 参数,它应该指定一个如下形式的函数:

function(boolean success) {...};

success ( boolean )

sendKeyEvents

chrome.input.ime.sendKeyEvents(object parameters, function callback)

发送键盘事件,该函数由虚拟键盘使用。用户按下虚拟键盘上的按键时,该函数可以用来将该事件传播给系统。

参数

parameters ( object )

属性

contextID ( integer )

发送键盘事件的上下文标识符。

keyData ( array of KeyboardEvent )

键盘事件的相关数据。

callback ( optional function )

操作完成时调用。

如果您指定了 callback 参数,它应该指定一个如下形式的函数:

function() {...};

hideInputView

chrome.input.ime.hideInputView()

隐藏系统自动弹出的输入视图窗口。如果输入视图窗口已经隐藏,该函数不进行任何操作。

setCandidateWindowProperties

chrome.input.ime.setCandidateWindowProperties(object parameters, function callback)

设置候选窗口的属性。如果当前扩展程序没有独占当前输入法,该方法将会失败。

参数

parameters ( object )

属性

engineID ( string )

要设置属性的引擎标识符。

properties ( object )

属性

visible ( optional boolean )

要显示候选窗口则为 true,隐藏则为 false。

cursorVisible ( optional boolean )

要显示光标则为 true,隐藏则为 false。

vertical ( optional boolean )

如果候选窗口竖排则为 true,横排则为 false。

pageSize ( optional integer )

每一页显示的候选项数目。

auxiliaryText ( optional string )

候选窗口底部显示的文字。

auxiliaryTextVisible ( optional boolean )

要显示辅助文字则为 true,隐藏则为 false。

windowPosition ( optional enum of "cursor", or "composition" )

显示候选窗口的位置。如果设置为 'cursor',窗口会跟随光标;如果设置为 'composition',窗口会固定在候选内容的开头。

callback ( optional function )

操作完成时调用。

如果您指定了 callback 参数,它应该指定一个如下形式的函数:

function(boolean success) {...};

success ( boolean )

setCandidates

chrome.input.ime.setCandidates(object parameters, function callback)

设置当前的候选列表。如果当前扩展程序没有独占当前输入法,该方法将会失败。

参数

parameters ( object )

属性

contextID ( integer )

拥有候选窗口的上下文标识符。

candidates ( array of object )

在候选窗口中显示的候选项列表。

每一个对象的属性

candidate ( string )

候选项。

id ( integer )

候选项标识符。

parentId ( optional integer )

将这些候选项添加至其下的标识符。

label ( optional string )

显示在候选项旁边的短字符串,通常为快捷键或索引。

annotation ( optional string )

描述候选项的附加文字。

usage ( optional object )

词语的用法或详细描述。

属性

title ( string )

详细描述的标题字符串。

body ( string )

详细描述的正文字符串。

callback ( optional function )

操作完成时调用。

如果您指定了 callback 参数,它应该指定一个如下形式的函数:

function(boolean success) {...};

success ( boolean )

setCursorPosition

chrome.input.ime.setCursorPosition(object parameters, function callback)

设置候选窗口中的光标位置。如果当前扩展程序没有独占当前输入法,则不进行任何操作。

参数

parameters ( object )

属性

contextID ( integer )

拥有候选窗口的上下文标识符。

candidateID ( integer )

选定的候选项标识符。

callback ( optional function )

操作完成时调用。

如果您指定了 callback 参数,它应该指定一个如下形式的函数:

function(boolean success) {...};

success ( boolean )

setMenuItems

chrome.input.ime.setMenuItems(object parameters, function callback)

当前输入法处于活动状态时,向语言菜单添加提供的菜单项。

参数

parameters ( object )

属性

engineID ( string )

要使用的引擎标识符。

items ( array of MenuItem )

要添加的菜单项,将按照数组中出现的顺序添加。

callback ( optional function )

如果您指定了 callback 参数,它应该指定一个如下形式的函数:

function() {...};

updateMenuItems

chrome.input.ime.updateMenuItems(object parameters, function callback)

更新指定菜单项的状态。

参数

parameters ( object )

属性

engineID ( string )

要使用的引擎标识符。

items ( array of MenuItem )

要更新的菜单项数组。

callback ( optional function )

操作完成时调用。

如果您指定了 callback 参数,它应该指定一个如下形式的函数:

function() {...};

deleteSurroundingText

chrome.input.ime.deleteSurroundingText(object parameters, function callback)

删除光标周围的文本。

参数

parameters ( object )

属性

engineID ( string )

接收该事件的引擎标识符。

contextID ( integer )

要删除周围文本的上下文标识符。

offset ( integer )

删除开始的位置,表示为从光标位置开始的偏移,可以为负值。

length ( integer )

要删除的字符数目。

callback ( optional function )

操作完成时调用。

如果您指定了 callback 参数,它应该指定一个如下形式的函数:

function() {...};

keyEventHandled

chrome.input.ime.keyEventHandled(string requestId, boolean response)

表示 onKeyEvent 接收到的键盘事件已处理,只有当 onKeyEvent 监听器为异步时才应该调用该方法。

参数

requestId ( string )

处理的事件的请求标识符,应该从 keyEvent.requestId 获得。

response ( boolean )

如果按键已处理则为 true,否则为 false。

事件

onActivate

输入法激活时发送这一事件,这意味着当前输入法将会接收 onKeyEvent 事件。

addListener

chrome.input.ime.onActivate.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(string engineID) {...};

engineID ( string )

接收这一事件的引擎标识符。

onDeactivated

当输入法处于不活动状态时产生,这意味着当前输入法不会继续接收 onKeyEvent 事件。

addListener

chrome.input.ime.onDeactivated.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(string engineID) {...};

engineID ( string )

接收这一事件的引擎标识符。

onFocus

当焦点进入文本框时发送该事件,它将发送至用户启用并且监听该事件的所有扩展程序。

addListener

chrome.input.ime.onFocus.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(InputContext context) {...};

context ( InputContext )

描述已经获得焦点的文本框。

onBlur

当焦点离开文本框时发送这一事件,它将发送至用户启用并且监听该事件的所有扩展程序。

addListener

chrome.input.ime.onBlur.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(integer contextID) {...};

contextID ( integer )

失去焦点的文本框标识符,在这一调用后该标识符不再有效。

onInputContextUpdate

当前的 InputContext(输入上下文)属性(例如类型)更改时发送这一事件,它将发送至用户启用并且监听该事件的所有扩展程序。

addListener

chrome.input.ime.onInputContextUpdate.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(InputContext context) {...};

context ( InputContext )

描述已更改文本框的 InputContext 对象。

onKeyEvent

如果当前扩展程序独占当前输入法,则会发送这一事件。

addListener

chrome.input.ime.onKeyEvent.addListener(function callback, array of enum of "async" extraInfoSpec)

参数

callback ( function )

extraInfoSpec ( optional array of enum of "async" )

包含附加信息的数组,指定回调函数如何调用。

callback 参数应该指定一个如下形式的函数:

function(string engineID, KeyboardEvent keyData) {...};

engineID ( string )

接收此事件的引擎标识符。

keyData ( KeyboardEvent )

键盘事件的数据。

监听器返回值

( boolean )
如果处理了这一次按键操作则返回 true,否则返回 false。如果没有指定 "async" 的话该函数必须返回一个值。

onCandidateClicked

如果当前扩展程序独占当前输入法,则会发送这一事件。

addListener

chrome.input.ime.onCandidateClicked.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(string engineID, integer candidateID, enum of "left", "middle", or "right" button) {...};

engineID ( string )

接收这一事件的引擎标识符。

candidateID ( integer )

单击的候选项标识符。

button ( enum of "left", "middle", or "right" )

单击了哪个鼠标按钮。

onMenuItemActivated

当用户选择菜单项时调用。

addListener

chrome.input.ime.onMenuItemActivated.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(string engineID, string name) {...};

engineID ( string )

接收此事件的引擎标识符。

name ( string )

激活的菜单项名称。

onSurroundingTextChanged

当光标周围可编辑的字符串更改或光标位置移动时调用,前进和后退方向的文本长度限制都是 100 个字符。

addListener

chrome.input.ime.onSurroundingTextChanged.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(string engineID, object surroundingInfo) {...};

engineID ( string )

接收该事件的引擎标识符。

surroundingInfo ( object )

周围文本的信息。

属性

text ( string )

光标周围的文本。

focus ( integer )

选定内容的结束位置,如果没有选择内容则表示光标位置。

anchor ( integer )

选定内容的起始位置,如果没有选择内容则表示光标位置。

onReset

当 Chrome 浏览器终止正在进行的文字输入会话时发送该事件。

addListener

chrome.input.ime.onReset.addListener(function callback)

参数

callback ( function )

callback 参数应该指定一个如下形式的函数:

function(string engineID) {...};

engineID ( string )

接收该事件的引擎标识符。