Chrome扩展程序IME示例错误

时间:2016-06-01 13:57:01

标签: javascript google-chrome-extension ime

我正在尝试学习如何构建Chrome扩展程序。因此,这个问题与代码本身一样与该过程有关。

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

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

加载扩展程序会在main.js的第9行报告错误(console.log("正在初始化IME");)#34;匿名函数"。

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

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

  4. 的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
    });
    

1 个答案:

答案 0 :(得分:0)

好的,这里的问题是扩展名是IME(键盘)

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

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

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

一切正常。

PS - 以及"错误"毕竟不是一个错误。