以前に同様の質問を投稿し、回答を受け取りましたが、新しい問題が発生する前に部分的にしか機能しませんでした.
これは、iframe の $(document).ready() 内のコードです。
$("button#arrow-left", window.parent.document).on("click", function () {
console.log("Got here");
$(document).trigger("VEHICLE.CONTROLS.PRESSED_LEFT");
});
これはほとんど機能します。親ドキュメントの左矢印をクリックすると、「Got here」がコンソールに表示されるようになりました。ただし、「VEHICLE.CONTROLS.PRESSED_LEFT」イベントが発生することはありません。
私のiframe JavaScriptの別の部分には、次の行があります。
$(document).on("VEHICLE.CONTROLS.PRESSED_LEFT", function () {
console.log("Left button pressed, triggering left swipe.");
$("div#swipe-container").swipe('swipe_left');
});
その 2 番目のコンソール ログは発生せず、私のスワイプ プラグインは左スワイプを正常に実行しません。
誰かが私が間違っていることを教えてもらえますか?
関連する場合に備えて、私は基本的に、車両で実行するように構築された HTML5/JS アプリを取得し、それをブラウザーに移植しています。アプリ自体は iframe で実行され、親ドキュメントにはシミュレートされた車両制御がいくつか含まれています。
スワイプをトリガーするコードの領域内のボタン クリックに直接バインドできることはわかっていますが、アプリケーションとターゲット API の間の媒体として機能する単一の JS ファイルを使用するという考え方です。このようにして、コードが実際の車両で実行されているか、シミュレーターで実行されているかに関係なく、コードの同期を保つことができます。
編集: また、これは、実際の車両 API を使用する前に作業していた機能とほぼ同じでした。車両 API を使用するときに以前にコントロールを設定した例:
sdk.vehicle.watchButtons("left", function () {
$(document).trigger("VEHICLE.CONTROLS.PRESSED_LEFT");
});