【问题标题】:Chrome Extension IME sample errorChrome 扩展输入法示例错误
【发布时间】:2016-09-30 22:47:41
【问题描述】:

我正在尝试学习如何构建 Chrome 扩展程序。所以这个问题与这个过程有很大关系,就像代码本身一样。

我从这里下载了示例代码:https://developer.chrome.com/extensions/samples#search:.ime(代码如下)

然后我浏览到 chrome://extensions,启用开发者模式,然后点击加载解压后的扩展 - 并选择包含以下 2 个文件的目录。

加载扩展在main.js (console.log("Initializing IME");) "anonymous function"第9行报错。

  1. 为什么代码会产生错误?
  2. 我是否正确加载了扩展程序?(它似乎没有被激活,可能是因为错误?)

  3. 我可以通过注释掉有问题的行来解决错误,但扩展似乎仍然没有被激活。 如何激活它?(我错过了什么吗?)

manifest.json:

{
 "name": "Test IME",
 "version": "1.0",
 "manifest_version": 2,
 "description": "A simple IME that converts all keystrokes to upper case.",
 "background":  {
   "scripts": ["main.js"]
 }, 
 "permissions": [
   "input"
 ],
 "input_components": [
   {
     "name": "Test IME",
     "type": "ime",
     "id": "test",
     "description": "Test IME",  // A user visible description
     "language": "en-US",  // The primary language this IME is used for
     "layouts": ["us::eng"]  // The supported keyboard layouts for this IME
   }
 ] 
}

main.js:

// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

var ime_api = chrome.input.ime;

var context_id = -1;

console.log("Initializing IME");

ime_api.onFocus.addListener(function(context) {
  console.log('onFocus:' + context.contextID);
  context_id = context.contextID;
});
ime_api.onBlur.addListener(function(contextID) {
  console.log('onBlur:' + contextID);
  context_id = -1;
});

ime_api.onActivate.addListener(function(engineID) {
  console.log('onActivate:' + engineID);
});
ime_api.onDeactivated.addListener(function(engineID) {
  console.log('onDeactivated:' + engineID);
});

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

  return false
});

【问题讨论】:

  • 错误显示在哪里?似乎它不是一个错误,只是日志。调试后台一探究竟。
  • 加载扩展时,我在扩展摘要区域看到错误。一个灰色的小圆圈。该扩展不使用 background.js。其实我也不确定后台文件是干什么用的。
  • 您的清单清楚地显示了一个背景文件。请务必先阅读 Chrome 扩展架构的文档,以便您可以首先了解您找到的代码如何工作,以及调试后台脚本时可能出现的问题。

标签: javascript google-chrome-extension ime


【解决方案1】:

好的,这里的问题是扩展名是输入法(键盘)

有一个额外的步骤来启用它。

Settings | Language & input settings | Input Method | Select the newly installed IME and acknowledge the alert

然后使用 ctrl-alt-space 选择新的输入法。

一切正常。

PS - “错误”毕竟不是错误。

【讨论】:

  • 抱歉,您能否说明一下您在设置下的“输入法”是在哪里找到的?我可能是盲人,但在“语言和输入设置”下看不到类似的内容,只有语言列表。
  • 是的,当前版本中不存在这样的设置,安装 Google 输入工具也无济于事(未列出扩展程序)。
猜你喜欢
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多