我正在尝试运行一个非常基本的 Chrome Native Client 应用程序。我想做的是响应击键,例如每当用户按下一个键时显示“你按下了 X”。我一整天都在做,但是每次我按下一个键,我都会得到“ Uncaught TypeError: Object # has no method '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 种不同的方法:使用 addEventListener 将其添加到 body 标签中,使用 onKeyDown 将其直接添加到 body 标签中……没有任何效果。
我有 C/C++ 和 PHP 的经验,但我的 Javascript 真的很弱。我想我一定遗漏了一些基本而明显的东西。