매우 기본적인 Chrome Native Client 애플리케이션을 실행하려고합니다. 내가하고 싶은 것은 사용자가 키를 누를 때마다 "You pressed X"라고 표시하는 것과 같이 키 입력에 응답하는 것입니다. 나는 하루 종일 있었지만 키를 누를 때마다 "잡히지 않은 TypeError : Object #에 'postMessage' '메서드가 없습니다.Chrome 기본 클라이언트, onKeyDown 이벤트를 사용하는 중에 오류가 발생했습니다.
오류는 모두 자바 스크립트에 있습니다. Native Client C++ 모듈은 정상적으로 작동합니다. 문서의 머리에
자바 스크립트 :
페이지에서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');}
}
: 나는 약 15 가지 방법을 시도했습니다
<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>
: 추가하여, 또는 addEventListener와 body 태그에 추가하여 직접 body 태그에 onKeyDown ... 아무것도 작동하지 않습니다.
C/C++ 및 PHP에 대한 경험이 있지만 자바 스크립트는 매우 약합니다. 나는 근본적이고 명백한 무언가를 놓치고 있어야한다고 생각한다.
글로벌 변수를 만드는 이유는 무엇입니까? 어쨌든, 자바 스크립트는 함수 범위를 가지고 있으며 "var"를 생략하면 어쨌든 "전역"이됩니다. 그래서 함수 밖에서 할당하는 것이 효과적이라고 생각하지 마십시오! –
안녕하세요 -이 코드의 대부분은 전역 변수를 포함하여 Native Client 사이트의 Hello World 자습서에서 직접 작성되었습니다. 정말 내 유일한 부분은 onKeyDown 이벤트를 청취하는 부분입니다. 나는 단지 그것을 작동 시키려고 노력하고있다. – felwithe