1/** 2 * Copyright (c) 2011 The Chromium Authors. All rights reserved. 3 * Use of this source code is governed by a BSD-style license that can be 4 * found in the LICENSE file. 5 */ 6 7var speakKeyStr; 8 9function speakSelection() { 10 var focused = document.activeElement; 11 var selectedText; 12 if (focused) { 13 try { 14 selectedText = focused.value.substring( 15 focused.selectionStart, focused.selectionEnd); 16 } catch (err) { 17 } 18 } 19 if (selectedText == undefined) { 20 var sel = window.getSelection(); 21 var selectedText = sel.toString(); 22 } 23 chrome.extension.sendRequest({'speak': selectedText}); 24} 25 26function onExtensionMessage(request) { 27 if (request['speakSelection'] != undefined) { 28 if (!document.hasFocus()) { 29 return; 30 } 31 speakSelection(); 32 } else if (request['key'] != undefined) { 33 speakKeyStr = request['key']; 34 } 35} 36 37function initContentScript() { 38 chrome.extension.onRequest.addListener(onExtensionMessage); 39 chrome.extension.sendRequest({'init': true}, onExtensionMessage); 40 41 document.addEventListener('keydown', function(evt) { 42 if (!document.hasFocus()) { 43 return true; 44 } 45 var keyStr = keyEventToString(evt); 46 if (keyStr == speakKeyStr && speakKeyStr.length > 0) { 47 speakSelection(); 48 evt.stopPropagation(); 49 evt.preventDefault(); 50 return false; 51 } 52 return true; 53 }, false); 54} 55 56initContentScript(); 57