2016-06-01 2 views
0

Chrome 확장 프로그램을 만드는 방법을 배우려고합니다. 따라서이 질문은 코드 자체만큼이나 그 프로세스와 관련이 있습니다. https://developer.chrome.com/extensions/samples#search:.ime (아래 코드)Chrome 확장 프로그램 IME 샘플 오류

가 그럼 난 크롬에 탐색 :

는 여기에서 샘플 코드를 다운로드 // 확장 가능 개발자 모드, 그리고 부하가 압축 해제 된 확장 프로그램 클릭 - 그리고 아래의 두 파일과 디렉토리를 선택 .

확장 프로그램을로드하면 main.js (console.log ("IME 초기화");) "익명 함수"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 
}); 
+0

어디에서 오류가 발생합니까? 오류가 아니라 로그 일 것 같습니다. 찾으려면 배경을 디버깅하십시오. –

+0

확장 프로그램을로드 할 때 확장 프로그램 요약 영역에 오류가 표시됩니다. 작은 회색 원. 확장 프로그램에서는 background.js를 사용하지 않습니다. 사실, 배경 파일이 무엇에 사용되는지 잘 모르겠습니다. – Brent

+0

매니페스트에 배경 파일이 명확하게 표시됩니다. 먼저 Chrome 확장 아키텍처 용 문서를 읽어야합니다. 먼저 발견 한 코드가 어떻게 작동하는지 이해하고 백그라운드 스크립트를 디버깅 할 때 실패 할 수있는 사항을 먼저 파악하십시오. –

답변

0

좋아, 문제는 여기 (확장자가 IME가 있다는 것이다 키보드)

사용할 수 있도록 추가 단계가 있습니다.

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

그러면 새로운 입력 방식을 선택 CTRL-ALT-공간을 사용한다.

모두 제대로 작동합니다.

PS - "오류"는 결국 오류가 아닙니다.

+0

죄송합니다. 설정에서 "입력 방법"은 어디에서 찾을 수 있습니까? 나는 아마도 눈이 멀지 만 "언어 및 입력 설정"에서 이와 같은 것을 볼 수는 없으며 언어 목록 만 볼 수 있습니다. – SergGr

관련 문제