kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

cordova のイベントリスナーで設定が残ってる模様

Androidのバックボタンのイベントリスナーをハックして、JS側の処理を追加したい。 document.addEventListener("backbutton", function(){}, false);

関数としてはこれで可能。

Apache Cordova API Documentation

これを利用してバックボタンでの処理を独自のものにしてしまう。

ここまでは問題なくできました。ハードボタンのイベントを取れるなんて素敵。なんて思ってたり。

問題点

ここからちょっと不明な点が発生。

イベントを設定したページから、次のページへの遷移後エラーが発生し始める。

戻るボタンを押すことでエラーが発生する。

次のページへ遷移しても、イベントが残り続けている??

戻れなくなった。。。

W/UnimplementedWebViewApi(1956): Unimplemented WebView method onKeyDown called from: android.webkit.WebView.onKeyDown(WebView.java:2301)

D/CordovaLog(1956): : Line 1 : Uncaught ReferenceError: cordova is not defined

I/chromium(1956): [INFO:CONSOLE(1)] "Uncaught ReferenceError: cordova is not defined", source: (1)

別ページに遷移しても、前のページのイベントが残る現象はWEBをやっていると意味がわからない。

エラー原因としてはcordova.jsを読み込んでいないページの為に発生していると思われる。

しかし、ページ遷移したんだから、イベントも消えてくれよ。。。

このあたりがWEBとアプリの違いなのか、バグなのかが判明できていないけど、アプリのブラックボックスはちょっとつらいです。

なんとか原因がわかったので、イベントを解除することで対応。

他にやり方がある気がしますけど、暫定対処です。