1

Firefox と Chrome ではコードは正常に動作しますが、IE ではイベントが削除されません。

dojo.connect(d, "onmouseout", function(evt) {
    //remove event
});

私はもう試した:

document.removeEventListener("keydown", keyHandler);
dojo.disonnect(document, "keydown", keyHandler);
document.detachEvent("keydown", keyHandler);

しかし、何も機能していないようです。variable に格納されているキャンバスからマウスが外れているときkeyHandlerに実行したくない関数です。keydownd

4

2 に答える 2

1

このコマンドで動作させることができました:document.onkeydown = null;

于 2012-12-04T09:16:06.190 に答える
0

disconnect関数を適切に使用しているかどうかを確認してください (スペル/構文も確認してください)。ドキュメントには次のように記載されています。

disconnect() は、偶然にも dojo.connect からの戻り値である唯一の引数として、特別に細工されたパラメーターを受け入れます。

...3 つのパラメーターを指定すると、ハンドラーが最後のパラメーターになります。

補足として、Dojo の内部で何が起こるかについてはよくわかりません (ただし、おそらくポリフィルを実装しているため、Dojo を使用する場合はネイティブ関数を使用する必要はありません) が、IEattachEventおよびdetachEvent'on' で始まるイベント名を受け入れます。 、たとえばonmouseoutonkeydown( MSDN の記事を参照してください)。

また、イベント名の違いにも注意してください。Dojo はon接頭辞付きの IE の構文を使用しているようですが、標準の DOM 実装では省略されています。したがって、同じイベントをバインドおよびアンバインドしているかどうかを確認する必要がある場合があります (たとえば、 にバインドする場合onkeydownは、バインドを解除onkeydownし、 ではありませんkeydown)。

于 2012-12-04T09:13:01.320 に答える