Собственный клиент Chrome, ошибки при использовании события onKeyDown - PullRequest
1 голос
/ 12 февраля 2012

Я пытаюсь запустить очень простое приложение Chrome Native Client. То, что я хотел бы сделать, это реагировать на нажатия клавиш, например, отображать «Вы нажали X» всякий раз, когда пользователь нажимает клавишу. Я был на этом весь день, но каждый раз, когда я нажимаю клавишу, я получаю " Uncaught TypeError: У Object # нет метода 'postMessage' ".

Все ошибки в Javascript; модуль Native Client C ++ работает нормально.

Javascript в заголовке документа:

myModule = null;  // Global application object.

function moduleDidLoad() {
    myModule = document.getElementById('mymodule');

    alert("module loaded!") // this works

    myModule.postMessage('hello'); // this works, and posts 'hello' to the module

   // ERROR
   document.body.onkeydown = function() {myModule.postMessage('hi');}
}

На странице:

<div id="listener">
   <script type="text/javascript">

     var listener = document.getElementById('listener');
      listener.addEventListener('load', moduleDidLoad, true);

   </script>

  <embed name="nacl_module"
   id="mymodule"
   width=0 height=0     
   src="mymodule.nmf"
   type="application/x-nacl" />
</div>

Я пробовал 15 различных способов: добавив его в тег body с помощью addEventListener, добавив его непосредственно в тег body с помощью onKeyDown ... ничего не работает.

У меня есть опыт работы с C / C ++ и PHP, но мой Javascript действительно слабый. Думаю, мне не хватает чего-то фундаментального и очевидного.

1 Ответ

0 голосов
/ 12 февраля 2012

решаемая. В другом месте на странице содержимое DIV, содержащее игровой модуль, было изменено, что привело к удалению модуля из памяти.

...